2 回答

TA贡献1796条经验 获得超4个赞
本机链接器找不到共享对象。将带有 so 的文件夹添加到您的 .LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:Libraries/
或者,您可以将其添加到本地库文件夹(通常)并重新运行 。/usr/local/lib
ldconfig

TA贡献1848条经验 获得超2个赞
所以我终于找到了为什么,这不是从多个文件使用多个函数的方法。您只需将所需的所有文件放在gcc命令中即可。我不知道为什么我试图使一个文件的库依赖于另一个文件的另一个库。这是我的项目的命令:
gcc -fPIC -shared -I"$$JAVA_HOME/include" -I"$$JAVA_HOME/include/linux" ../IndexationTexte/indexationV1.c ../IndexationTexte/fileMot.c -o Libraries/libindexation.so
对于更通用的方法,如果您有:
file1.c :
#include "file2.c"
void function1()
{
function2();
}
file2.c :
void function2()
{
printf("hey from an other file");
}
你必须像这样简单地编译你的项目:
gcc -fPIC -shared -I"$$JAVA_HOME/include" -I"$$JAVA_HOME/include/linux" file1.C file2.c -o libmylibrary.so
添加回答
举报