外面的每个人,
我正在编写一个 C 代码,当我编译它时,它有一个奇怪的问题。
源码没问题。
我使用以下选项编译它:
$ gcc above_sample.c -I/home/hadoop/project/hadoop-0.20.2/src/c++/libhdfs -L/home/hadoop/project/hadoop-0.20.2/c++/Linux-amd64-64/lib -lhdfs -o above_sample.
但它显示的输出是这样的:
/usr/bin/ld: warning: libjvm.so, needed by /home/hadoop/project/hadoop-0.20.2/c++/Linux-amd64-64/lib/libhdfs.so, not found (try using -rpath or -rpath-link) /home/hadoop/project/hadoop-0.20.2/c++/Linux-amd64-64/lib/libhdfs.so: undefined reference to `JNI_CreateJavaVM@SUNWprivate_1.1'
/home/hadoop/project/hadoop-0.20.2/c++/Linux-amd64-64/lib/libhdfs.so: undefined reference to `JNI_GetCreatedJavaVMs@SUNWprivate_1.1'
collect2: ld returned 1 exit status
我搜索了 libjvm.so 我在我的系统中的 /usr/java/lib 中找到了它。
我做了一个符号链接,但没有用。
我将库复制到了几个地方,例如 usr/lib 检查 LD_library_Path
但无法编译该程序,它一次又一次地显示相同的错误
谁能告诉我我做错了什么?
如何将 .so 文件链接到 gcc ?
或者.so文件如何在程序中链接?
尝试添加:
-L/usr/java/lib
对于您的链接器命令,因为这是您的链接器无法找到的库:I_GetCreatedJavaVMs@SUNWprivate_1.1
.
一个小建议:乱搞不是一个好主意LD_LIBRARY_PATH
。只需修复您的链接器命令即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)