我正在构建一个简单的C++程序,我想暂时用一个系统提供的共享库替换它的更新版本,以进行开发和测试.
我尝试设置LD_LIBRARY_PATH变量,但链接器(ld)失败了:
/ usr/bin/ld:找不到-lyaml-cpp
我希望这可以工作,因为根据ld手册页:
链接器使用以下搜索路径来查找所需的共享库:...对于本机链接器,环境变量"LD_LIBRARY_PATH"的内容...
然后我尝试设置LIBRARY_PATH,这很有效.
根据GCC手册:
LIBRARY_PATH的值是以冒号分隔的目录列表,与PATH非常相似.当配置为本机编译器时,GCC会在搜索特殊链接器文件时尝试这样指定的目录,如果它无法使用GCC_EXEC_PREFIX找到它们.在使用-l选项搜索普通库时,使用GCC链接也会使用这些目录(但首先使用-L指定的目录).
正如(GCC)手册所示,LIBRARY_PATH可行,因为我与GCC链接.
但..
Nav*_*een 197
LIBRARY_PATHgcc在编译之前用于搜索包含需要链接到程序的静态库的目录.
LD_LIBRARY_PATH在成功编译和链接后,程序将使用它来搜索包含共享库的目录.
编辑:如下所述,您的库可以是静态的或共享的.如果它是静态的,则将代码复制到程序中,并且在编译和链接程序后不需要搜索库.如果你的图书馆是共享的,那么它需要动态链接到你的程序,并且当LD_LIBRARY_PATH它发挥作用时.
F'x*_*F'x 44
LD_LIBRARY_PATH在程序启动时LIBRARY_PATH搜索,在链接时搜索.
来自评论的警告:
ld(而不是gcc或g++)链接库时,不会读取LIBRARY_PATH或LD_LIBRARY_PATH环境变量.gcc或链接库时g++,将LIBRARY_PATH读取环境变量(请参阅文档" gcc在搜索普通库时使用这些目录").| 归档时间: |
|
| 查看次数: |
167236 次 |
| 最近记录: |