当前位置:  技术问答>linux和unix

编译动态连接库的问题

    来源: 互联网  发布时间:2016-07-13

    本文导语:  test.c #include  void print() {         printf("------------------------n"); } gcc -c test.c gcc -shared -o libtest.so test.o 生成了libtest.so库 然后我调用它 main.c extern void print(); int main() {         print();         return 0; } ...

test.c

#include 
void print()
{
        printf("------------------------n");
}

gcc -c test.c
gcc -shared -o libtest.so test.o
生成了libtest.so库
然后我调用它
main.c

extern void print();
int main()
{
        print();
        return 0;
}

gcc -L./ -ltest -o main main.c
./main 
error while loading shared libraries: libtest.so: cannot open shared object file: No such file or directory

请高手指点一下 不知道哪儿错了

|


你要分清,编译和运行是两回事。
编译的时候指定libtest.so只是代表着你的main.c没有语法错误,生成可执行文件。

然后运行的时候去动态加载libtest.so 所以要把libtest.so放到系统库目录里。
/etc/ldconfig?

|
完全可以,参见http://hi.baidu.com/plumstar/blog/item/fce3d1296138bef498250ab0.html

|
要把生成的libtest.so copy到/lib后再执行./main

|
不一定要指定在/lib下面。但是一般都是会放在一个叫lib的目录里面,这个目录可以自己建立,当你运行编译好的程序之前不需指定你的动态库的路径,比如:export LD_LIBRARY_PATH=$HERE/lib,这样应运行编译的bin 文件就应该没有问题了

|
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.

    
 
 

您可能感兴趣的文章:

  • 编译、汇编、连接分别指代什么?
  • 编译连接时候的问题
  • 关于编译连接问题
  • kdevelop4中怎么设置才能编译时连接pthread库
  • 请问高手,在SCO UNIX系统下如何编译共享连接库(*.so)
  • vc编写dll动态连接库(编译过的)能在unix上开发使用吗?
  • AIX下gcc编译器怎么使用动态连接库
  • gcc 和g++分别编译出来的.o 再一起连接成可执行程序,是否有问题。
  • 理解不了的编译连接问题
  • 在solaris 10上进行socket编程 编译没有问题 连接时出了错
  • solaris下cc编译器连接时出错?
  • 编译动态连接库是报错!在线急等回答!!
  • 求助!!编译连接 mysql 时出错
  • gcc的静态库.lib怎末在编译的时候连接。对了静态库是自己的???
  • KDE/QT程序在Xteam Linux或红旗Linux下是不是可以直接编译连接?
  • 在linux下用gcc编译时能不能实现“选择”的静态连接呢?
  • 编译连接成功,但不能执行!!求助!!!
  • 编译#include<curses.h>时连接出问题,望大家帮忙~~~~~
  • bean编译问题:bean A连接数据库,bean B进行一些操作,A编译正常,B编译时报找不到A中的类。?????
  • 使用连接池时能否使用预编译的PrepareStatement或CallableStatement,200分求教
  • 动态编译与静态编译驱动程式疑问?
  • Linux动态库编译问题
  • 在linux下(c++),如何动态调用 动态库(.so)? 为什么我编译报错:undefined reference to "dlopen"
  • 如何在程序中动态的加载并且调用另一个编译好的函数?
  • 问一个编译动态链接库的问题
  • C++动态编译工具 ccbuild
  • 编译时链接我的动态库出现错误:undefined reference to ‘XXXXXX’
  • arm-linux-gcc 编译时加载<math.h>动态链接库的问题
  • unix 如何使用xlC_r把程序编译成动态链接库
  • 高手接分!UNIX 64位动态链接库编译问题
  • 不改变代码,怎样使每次编译生成的可执行程序或动态库二进制保持一致?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux/centos源码安装nginx编译配置选项参数介绍
  • 请教:JSP编译器编译成字节码,跟别的编译器编译出来的有什么不同呢?
  • CentOS 6内核升级:下载编译启用新内核版本详细过程
  • 编译GCC时能不能只编译C/C++的编译器?
  • 高速的网络抓包库PF_ring介绍及编译安装
  • 关于arm交叉编译器4.3.3编译程序报错,但是3.4.5却能编译通过的问题
  • JB下,我的程序编译得好慢!请问用什么方法编译才可以快一点?或编译顺序改变一下?
  • 请问gdb是不是只能调试gcc编译的程序,在unix下用其它编译器编译的程序是不是不一定能用gdb调试的?
  • 用JCreator写了一个小程序,有十几个class,当修改某个文件重新编译,javac并没有编译修改的文件,请问要如何做javac才会重新编译所有的
  • 问:关于gcc编译器和g++编译器
  • 嵌入式linux开发:一段代码在windows平台用VC编译运行正常,在linux平台用gcc编译运行正常,但是用arm-linux-gcc编译在嵌入式板子上运行就不正常.
  • 在cygwin编译驱动程序要不要交叉编译?
  • 关于如何把编译进内核的编译成模块
  • C编译器 c++编译器 wieldylcc
  • Linux下gcc编译时,如何以静态链接的形式编译?
  • PROC开发时 //注释编译不通过 如何设置使用cpp编译。
  • 编译失败后如何再继续编译
  • 编译qt-x11,最后编译生成可执行文件时候,make出错
  • 如何查看已编译安装软件的编译命令行
  • 请问哪里有反编译.class文件的反编译器?
  • 用Jdk编译时出现提示要加 -deprecation 再编译,请教??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3