假设我有一个main.lo ,我想链接库foo.so 链接器应该总是在/foo/bar/lib.so (固定path,不search)中查找foo.so ,但是我的主目录中只有lib.so ,而不是在/foo/bar/ ,这是一个受保护的目录我不能写给自己。
有没有可能像这样链接库?
编辑 :下面是使用/tmp而不是/foo/bar的简单示例。 你可以通过修改构build脚本来工作吗?
main.c中
如何最好地将CString转换为BSTR将其作为“in”parameter passing给COM方法?
如何判断操作系统是Windows XP还是更高?
如何监视input到标准输出缓冲区中的内容,并在特定string存储在pipe道中时中断?
UVC扩展单元和Directshow集成
void foo(); int main(){ foo(); return 0; }
foo.c (多文件库被高估)
#include <stdio.h> void foo(){ puts("foo"); }
build.sh
#!/bin/sh set -x gcc -c -fPIC main.c -o main.lo gcc -c -fPIC foo.c -o foo.lo gcc -shared -o foo.so foo.lo gcc -o pwd main.lo "$PWD/foo.so" rm -f /tmp/foo.so #? Link into dest,against /tmp/foo.so but use "$PWD/foo.so" cp -a foo.so /tmp/foo.so echo pwd: ./pwd #this works echo dest: ./dest
find已经在C程序中使用过的所有库的列表(.exe)
我如何在多个监视器设置中testing我的Windows应用程序?
C#语音识别 – 识别语音和执行任务
SetTimer()陷阱
您需要两个选项才能使其工作:
首先,您需要使用-L选项来告诉链接器此刻库实际位于的位置。
然后,您需要使用-rpath 链接器选项来确定最终位置。 不幸的是,这是一个链接器特定的选项 ,这意味着您需要使用-Wl选项来使用GCC前端程序。
所以命令应该看起来像这样
$ gcc object.o files.o -o target -L/current/path/to/library -Wl,-rpath,/final/path/to/library -llibrary
请注意,这两个路径当然可以是相同的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。