我已经构建 libshared.so ,依赖于 libshared_dependent.so
现在,我正在编译使用 libshared.so 的 app.bin ,现在在编译时gcc要我指定 -lshared_dependent 另外,它给出了一些未找到符号的错误。
有没有办法,在编译时我不需要指定 -lshared_dependent ,我想只指定 -lshared 吗?
答案 0 :(得分:4)
在生成libshared.so时,您只需要将libshared.so链接到libshared_dependent.so。
gcc -shared -o libshared.so -lshared_dependant file1.o file2.o
这样,当您将应用程序链接到libshared.so时,它还会链接到libshared.so依赖的任何内容
答案 1 :(得分:1)
您不需要将app.bin链接到libshared_dependent.so。
也就是说,链接器将要验证libshared.so中的符号是否可以找到,因此需要找到libshared_dependent.so才能执行此操作。如果libshared_dependent.so与libshared.so位于不同的目录中,则需要使用链接器选项-rpath-link指定libshared_dependent.so的路径。
因为-rpath-link是一个链接器选项,所以你需要告诉gcc将它传递给链接器:
gcc -Wl,-rpath-link,/directory-that-libshared_dependent-is-in