linux库问题 [英] linux library problem

查看:175
本文介绍了linux库问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

每个人都在那里,
我正在编写一个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,需要/home/hadoop/project/hadoop-0.20.2/c++/Linux-amd64-64/lib/ libhdfs.so,未找到(尝试使用-rpath或-rpath-link)/home/hadoop/project/hadoop-0.20.2/c++/Linux-amd64-64/lib/libhdfs.so:对JNI_CreateJavaVM @ SUNWprivate_1.1'
/home/hadoop/project/hadoop-0.20.2/c++/Linux-amd64-64/lib/libhdfs.so:对JNI_GetCreatedJavaVMs@SUNWprivate_1.1的未定义引用
collect2 :ld返回1退出状态

我搜索了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 混淆不是个好主意。只需修复您的链接器命令。


Everybody out there, I'm writing a c code which have a strange problem when I compile it . The source code is OK. I compile it with following option:

$ 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.

But it show the out put like that:

/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

I searched for libjvm.so i found It in my system in /usr/java/lib.

I made a symbolic link of it but did not work.

i copied the library in to several places like usr/lib check the LD_library_Path but could not manage to compile the program it showing the same error again and again

Can any one tell me what I'm doing wrong ? how to link .so file to gcc ? or how .so files are linked in program?

解决方案

Try adding:

-L/usr/java/lib

To your linker command, since that's the library your linker is not being able to find: I_GetCreatedJavaVMs@SUNWprivate_1.1.

A little piece of advice: it's not a good idea to mess with LD_LIBRARY_PATH. Just fix your linker command.

这篇关于linux库问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆