为什么可以';是否从/etc/ld.so.conf中的路径查找库?
我想将为什么可以';是否从/etc/ld.so.conf中的路径查找库?,c,linux,gcc,linker,ld,C,Linux,Gcc,Linker,Ld,我想将/opt/vertica/lib64添加到系统库路径中,因此我执行以下步骤: (1) 将/opt/vertica/lib64添加到/etc/ld.so.conf中,然后运行ldconfig, (2) 检查它: bash# ldconfig -p | grep vertica libverticaodbc.so (libc6,x86-64) => /opt/vertica/lib64/libverticaodbc.so ...... 但是当我运行“ld-lverti
/opt/vertica/lib64
添加到系统库路径中,因此我执行以下步骤:(1) 将
/opt/vertica/lib64
添加到/etc/ld.so.conf
中,然后运行ldconfig
,(2) 检查它:
bash# ldconfig -p | grep vertica
libverticaodbc.so (libc6,x86-64) => /opt/vertica/lib64/libverticaodbc.so
......
但是当我运行“ld-lverticaodbc--verbose
”命令时:
==================================================
attempt to open /usr/x86_64-redhat-linux/lib64/libverticaodbc.so failed
attempt to open /usr/x86_64-redhat-linux/lib64/libverticaodbc.a failed
attempt to open /usr/local/lib64/libverticaodbc.so failed
attempt to open /usr/local/lib64/libverticaodbc.a failed
attempt to open /lib64/libverticaodbc.so failed
attempt to open /lib64/libverticaodbc.a failed
attempt to open /usr/lib64/libverticaodbc.so failed
attempt to open /usr/lib64/libverticaodbc.a failed
attempt to open /usr/x86_64-redhat-linux/lib/libverticaodbc.so failed
attempt to open /usr/x86_64-redhat-linux/lib/libverticaodbc.a failed
attempt to open /usr/lib64/libverticaodbc.so failed
attempt to open /usr/lib64/libverticaodbc.a failed
attempt to open /usr/local/lib/libverticaodbc.so failed
attempt to open /usr/local/lib/libverticaodbc.a failed
attempt to open /lib/libverticaodbc.so failed
attempt to open /lib/libverticaodbc.a failed
attempt to open /usr/lib/libverticaodbc.so failed
attempt to open /usr/lib/libverticaodbc.a failed
ld: cannot find -lverticaodbc
ld
在/opt/vertica/lib64
中找不到verticaodbc
有人能提供一些线索吗?非常感谢 ld
是静态的ld.so
是动态链接器(而ldconfig
和ldd
与动态链接器相关)
您需要在链接时将-L/opt/vertica/lib64/
添加到ld
参数中(您通常应该链接到gcc
或g++
)。实际上,这意味着编辑构建基础结构(例如,Makefile
)以添加几十个字符
看,
也请阅读,&是否有任何方法不明确使用“
-L/opt/vertica/lib64/
?除了添加到LD\u LIBRARY\u路径
之外。没有,但是为什么链接到-L/opt/vertica/lib64/
是一个问题?只需编辑您的Makefile
!只是感觉不是一种优雅的方式。如果库路径发生更改,则还需要修改Makefile。在Solaris上,有crle
。然后,改进ld
,以满足您的需要。binutils是免费软件,您可以改进它(只要您遵守GPL许可证)