У меня есть глобальные переменныеsigemptyset() будет перезаписывать следующей переменной
int a[10];
struct sigaction act;
int b[10];
Всякий раз, когда я называю
sigemptyset(&act.sa_mask);
массив a
является поврежденным. Я сомневаюсь, что это проблема компилятора. Я использую CodeSourcery mips-linux-gnu-gcc версии 4.5.2. Я компилирую с помощью
mips-linux-gnu-gcc -c -g -muclibc -pedantic -Wno-declaration-after-statement -std=gnu99 -G 0 -mips2 -msoft-float -mno-memcpy -fomit-frame-pointer -pipe -Wall -Wstrict-prototypes signal/signal.c
mips-linux-gnu-gcc -G 0 -msoft-float -static -o signal signal.o
Мой полный код следующим образом:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
int a[10];
struct sigaction act;
int b[10];
int main();
int main()
{
int i;
//initialize a and b
for(i = 0 ; i < 10;i++)
{
a[i]=1;b[i]=1;
}
sigemptyset(&act.sa_mask);
//print
for(i = 0 ; i < 10;i++)
{
printf("%d %d ",a[i],b[i]);
}
return 0;
}
Я обнаружил, что с помощью -muclibc
опции для компиляции вызывает эту проблему.
Не могли бы вы включить самый маленький * полный * пример, который имеет эту проблему? – NPE
Да, я сделал необходимые изменения – user919082
Возможно, ваши файлы заголовков для какой-либо другой библиотеки (например, glibc или newlib), а не uClibc, или вы связаны в glibc или newlib, но используете файлы заголовков uClibc. – nos