Я спокойно могу вызвать функцию, в пределах одной функции, но когда пытаюсь вызвать эту же функцию, в пределах другой, в этом же файле, линковщик кричит. Хотелось бы скинуть на русском или на английском но увы, у меня линковщик почему-то говорит на украинском)
Функция getMessage() определена в другом файле, этот файл компилю, после чего все складываю через ld.
( если кто будет смотреть исходники то
getMessage() - в файле task_controll.с
А все что я здесь показал в файле shell.с )
void test(void){
// getMessage(); // Если здесь этого вызова нет, то все компилит нормально.
return;
}
void shell(void)
{
putLine(t1);
while( 1 ){
putChar('>');
key = 0;
i = 0;
for( int i = 0; i < 255; i++ )
buff[i] = 0;
do{
shellMessageLine = getMessage(); // Этот же вызов здесь работает вполне нормально.
...
Линковщик кричит это:
ld: Source/shell.o: у функції «test»:
shell.c:(.text+0x40): невизначене посилання «__stack_chk_fail_local»
ld: kernel: прихований символ «__stack_chk_fail_local» не визначено
ld: спроба остаточного компонування зазнала невдачі: помилкове значення
Вообше вся прога есть на гитхабе. Только там нету вызова из за которого все падает:
https://github.com/ASMcoder555/Neo-Operating-System