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

为什么静态编译一个程序的时候总是出错?大侠帮我看看

    来源: 互联网  发布时间:2017-03-17

    本文导语:  我先用了如下命令编译一个程序,采用动态连接方式: # arm-linux-gcc -o VideoPlayer VideoPlayer.c -lavcodec -lavutil -lavformat -lswscale 编译很顺利,然后我想采用静态连接方式编译它: # arm-linux-gcc -static -o VideoPlayer.cx...

我先用了如下命令编译一个程序,采用动态连接方式:

# arm-linux-gcc -o VideoPlayer VideoPlayer.c -lavcodec -lavutil -lavformat -lswscale

编译很顺利,然后我想采用静态连接方式编译它:

# arm-linux-gcc -static -o VideoPlayer.cxe VideoPlayer.c -lavcodec -lavutil -lavformat -lswscale

这个时候总是出错,错误是在连接的时候出现的。

我现在的需求是不想要动态连接方式,而是采用静态连接方式把库直接加载到程序里编译成可执行程序,这样在其他平台运行这个程序的时候就不需要加载那么多动态库了,

但是我静态编译总是失败,而动态编译却一点问题都没有,这个为什么啊? 

是不是静态编译的时候没有设置好编译选项呢?

先谢谢大家了。

|

是吗?
$ gcc pthread.c -lpthread
$ ls -lh a.out 
-rwxrwxr-x 1 x x 4.9K 05-13 17:42 a.out
$ file a.out 
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped

$ gcc -static pthread.c -lpthread
$ ls -lh a.out
-rwxrwxr-x 1 x x 660K 05-13 17:42 a.out
$ file a.out 
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.9, not stripped

LZ你要把报的错贴上来啊,不用让别人猜谜语

|
不报错才怪呢...

gcc的-l参数是啥含义?

你要是想编译成静态的,需要去找到.a版本的库,名字大概是libavcodec.a,后面的依次类推

|
如果你想做静态的编译,最好的方法是使用.a的那个静态库,然后这样编译:

gcc -o test test.c libtest.a

如果用-static,因为你的是交叉编译环境,所以对应的.so库要是for ARM的,而不是for PC的。这里假定你的板

子是ARM的处理器,因为这个应用的更广一些。

那你需要把那些.so拷贝到你的交叉编译环境的lib路径下去,而不是PC的lib路径下。如果你自己显示的指定了库

的位置,依然还是编译出错,那最好把出错信息贴上来

|

楼主可以“调整一下库的顺序试试”

|
数学函数库你没有链接。再加上 -lm 的选项,链接上数学库

然后重新编译一下,有错误再把错误贴上来

|

呵呵,我大意了,把static给漏掉了。

抱歉!

|
不知道楼主问题解决了没有,我也遇到了同样的问题,调了1个多星期了,还是不行,烦死了

    
 
 

您可能感兴趣的文章:

  • 动态编译与静态编译驱动程式疑问?
  • gcc的静态库.lib怎末在编译的时候连接。对了静态库是自己的???
  • Linux下gcc编译时,如何以静态链接的形式编译?
  • 急求静态库引用静态库,该如何编译链接!!!
  • 请教一个gcc静态编译的问题。
  • 关于静态编译
  • 静态库编译问题
  • LINUX下的静态库编译链接问题
  • 编译静态链接库,其中使用了其它链接库,该如何写makefile
  • 如何编译一个静态的so
  • solaris9 静态库编译出错
  • apache模块静态编译问题
  • 关于交叉编译中静态库的位置
  • 请问大虾,如何将静态库文件 .a 进行反编译? 在线等
  • 请问编译静态链接库的makefile该如何写?
  • 静态库如何一起编译进去
  • 静态反编译软件 IDA PRO
  • Linux下交叉编译静态库得问题
  • linux 编译的时候,如何与.a静态库做链接生成.elf文件?
  • 发帖求问共享库静态编译的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 一个基本概念问题:静态函数只能调用静态方法,类的成员函数也是静态的吗?
  • linux中静态链接库调用了另一个静态链接库
  • 如何 用一个静态库 生成 另一个静态库
  • 请教:(static)静态变量和静态方法是什么意思?
  • 有把两个静态库.a合成一个静态库的简单方法吗
  • linux 生成静态库的时候怎么连接别的静态库
  • 静态博客 静态blog
  • 静态库动态库同时存在时,如何指定使用静态库
  • C# 静态方法与非静态方法的区别分析
  • 如何在一个静态链接库中链接另一个静态链接库?
  • PHP static局部静态变量和全局静态变量总结
  • c#静态方法和非静态方法详细介绍
  • 在静态上下文中不能引用非静态方法test(),天啊,为什么我的main()不能调用任何其它函数?
  • 静态函数,静态变量
  • java有无像vb那样的静态变量?java的staic是类的属性,那末,静态变量如何声明?
  • c++静态局部变量和静态函数示例
  • 一个静态库包含多个函数,应用程序连接了库中的某个函数,应用程序目标代码中是否还包含了该静态库中的其他函数代码?
  • 关于C++静态成员函数访问非静态成员变量的问题
  • asp.net伪静态后真正的静态文件无法访问的解决方法
  • 请问在LINUX下怎么设置静态IP?我在虚拟机中不能设置静态IP怎么办?


  • 站内导航:


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

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

    浙ICP备11055608号-3