windows系统下gcc编译器ld器报错
代码文件:a.c和b.c
/*a.c*/
extern int shared;
void swap(int*,int*);
int main()
{
int a = 100;
swap(&a,&shared);
}
/*b.c*/
int shared = 1;
void swap(int * a,int * b){
*a^=*b^=*a^=*b;
}
运行结果
可以正确生成ab.exe文件执行。
提示如上图。
http://bbs.csdn.net/topics/390536522
补充问题
只要main函数名改作其他的名字,比如teset(),或者ss()等,分步编译的结果就可以成功,这让我更加疑惑了
/*a.c*/
extern int shared;
void swap(int*,int*);
int ss() //int main(),修改的地方
{
int a = 100;
swap(&a,&shared);
}
/*b.c*/
int shared = 1;
void swap(int * a,int * b){
*a^=*b^=*a^=*b;
}
分步编译的指令仍然是:gcc -c a.c b.c ld a.o b.o,这样的结果我不清楚是什么原因,nm命令也看不大懂每段具体是什么,求大神指点
我的是加了一个 -fno-stack-protector 解决的