我在阅读一本书,里面给一个静态连结的范例
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