账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    GCC multiple definition of
    42
    0
    两个cpp文件。//main.cppint cat = 3;int main(){ return 0;}//data.cppint cat = 10;使用gcc分别编译成目标文件。gcc -c main.cppgcc -c data.cpp然后执行gcc main.o data.o结果报错:data.o:(.data+0x0): multiple definition of `cat'main.o:(.data+0x0): first defined herecollect2: error: ld returned 1 exit status问题来了,如果我将data.cpp编译成动态库。gcc -fPIC -shared data.cpp -o libdata.so然后执行gcc main.o libdata.so就不会报错。如果将data.o打包成静态库ar rcs libdata.a data.o再执行gcc main.o libdata.a也不会报错。这是为什么?使用nm命令查看libdata.so和libdata.a,都包含了符号'cat',gcc却没报multiple definition错误。
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部