我在閱讀一本書,裡面給一個靜態連結的範例
a.c:
extern int shared;
int main() {
int a = 100;
swap(&a, &shared);
return 0;
}
b.c:
int shared = 1;
void swap(int *a, int *b){
*a ^= *b ^= *a ^= *b;
}
編譯指令:
gcc -c a.c -fno-stack-protector
gcc -c b.c -fno-stack-protector
連結指令:
ld a.o b.o -e main -o ab
執行時:
./ab 出現 segmentation fault(core dump)
請問有人知道這甚麼狀況嗎? 謝謝
我GCC 版本 gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
ld 版本 GNU ld (GNU Binutils for Ubuntu) 2.34