为什么可以';是否从/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许可证)