gpt4 book ai didi

c++ - 如何在 gcc 中链接到我自己的库?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:06:14 25 4
gpt4 key购买 nike

构建可执行文件的命令:
g++ -I../include/redis -L../lib/redis redis.cpp -o redis -lhiredis

描述:
我在 ../lib/redis/ 中有 libhiredis.so。而在/usr/local/lib/hiredis13/中,有libhiredis.solibhiredis.so.0.13,这个libhiredis .so 是指向libhiredis.so.0.13 的符号链接(symbolic link)。然后我ldd redis,结果如下:

linux-vdso.so.1 =>  (0x00007ffd227f7000)  
libhiredis.so.0.13 => not found
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f7ebca0d000)
libm.so.6 => /lib64/libm.so.6 (0x00007f7ebc70b000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f7ebc4f5000)
libc.so.6 => /lib64/libc.so.6 (0x00007f7ebc132000)
/lib64/ld-linux-x86-64.so.2 (0x00007f7ebcd23000)

Gcc 应该链接到 ../lib/redis/ 中的 libhiredis.so,对吗?

最佳答案

可能您的库有一个 SONAME (libhiredis.so.0.13),所以程序会记录它而不是文件名。然后,在运行时,在通常的目录中搜索 SONAME

您的库位于 /usr/local/lib/hiredis13/ 中,这不是通常的目录。解决方案是以下之一:

  • /etc/ld.so.conf/etc/ld.so.conf中添加/usr/local/lib/hiredis13目录。 d/* 并重新运行 ldconfig
  • 运行程序时导出环境变量LD_LIBRARY_PATH=/usr/local/lib/hiredis13
  • 使用 -rpath 链接器选项。

关于c++ - 如何在 gcc 中链接到我自己的库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40233872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com