shenkonghui / issue

问题记录
0 stars 0 forks source link

C++编译问题记录 #155

Open shenkonghui opened 2 years ago

shenkonghui commented 2 years ago

编译成功,但是执行提示undefined symbol: add 代表当前可执行文件找不到相应的方法add

通过ldd -r命令验证

undefined symbol: add   (./main)
        linux-vdso.so.1 =>  (0x00007fff9df27000)
        libadd.so => not found
        libc.so.6 => /lib64/libc.so.6 (0x00007f6104708000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f6104ad6000)

寻找动态库或者静态链接库

动态连接库

[root@localhost 4.shard_lib]# nm libadd.so  |grep add
00000000000005da T add

加入动态链接库寻找路径即可

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<包含该函数的动态链接库路径>

静态链接库

同样适用nm 命令查看是否包含该方法

然后在Cmake的里面进行链接

指定静态链接库

TARGET_LINK_LIBRARIES(<path>/libxxx.a)