当前位置: 技术问答>linux和unix
请教动态编译问题
来源: 互联网 发布时间:2016-11-05
本文导语: 一个简单的hello.c程序 #include "stdio.h" int main(int argc, char *argv[]) { printf("hellon"); } 用静态编译:ppc_4xx-gcc -static hello.c -o hello 放到板子上可以正常运行; 而用动态编译:ppc_4xx-gcc -o hello hello.c 放到板子上...
一个简单的hello.c程序
#include "stdio.h"
int main(int argc, char *argv[])
{
printf("hellon");
}
用静态编译:ppc_4xx-gcc -static hello.c -o hello
放到板子上可以正常运行;
而用动态编译:ppc_4xx-gcc -o hello hello.c
放到板子上运行出现错误:/bin/sh: ./hello: not found
在网上搜了好多种动态编译的方法还是没有解决,请各位大侠出手相救啊!
#include "stdio.h"
int main(int argc, char *argv[])
{
printf("hellon");
}
用静态编译:ppc_4xx-gcc -static hello.c -o hello
放到板子上可以正常运行;
而用动态编译:ppc_4xx-gcc -o hello hello.c
放到板子上运行出现错误:/bin/sh: ./hello: not found
在网上搜了好多种动态编译的方法还是没有解决,请各位大侠出手相救啊!
|
加上 -fPIC 选项?
|
是不是缺乏对应的库文件,你静态编译的时候会把系统的必要的库包含到可执行文件中
动态编译应该去找宿主机的库,如果没有的话就会提示找不到了吧
动态编译应该去找宿主机的库,如果没有的话就会提示找不到了吧
|
放到板子上运行出现错误:/bin/sh: ./hello: not found
这条出错信息不全,实际的运行和出错信息是啥样?
/bin/sh: ./hello
not found
?是这样么,如果是那就奇怪了,你看下是否hello没可执行权限还是你这样的路径名不全?
你板子上有ldd吗,查看下hello
只要有/lib/libc.so.6就足够它运行了。
linux-gate.so.1和ld-linux.so.2不是以实际文件的形式存在的,不用找,找也找不到,你倒是可以网上搜下了解下。
这条出错信息不全,实际的运行和出错信息是啥样?
/bin/sh: ./hello
not found
?是这样么,如果是那就奇怪了,你看下是否hello没可执行权限还是你这样的路径名不全?
你板子上有ldd吗,查看下hello
只要有/lib/libc.so.6就足够它运行了。
linux-gate.so.1和ld-linux.so.2不是以实际文件的形式存在的,不用找,找也找不到,你倒是可以网上搜下了解下。
|
++,我也这么认为。
一般上板子,都是没库才静态编译的,
|
目前比较同意这条意见
按ldd的输出应该是不需要其它了
|
busybox在配置时可以选择是静态还是动态的。除了系统必要的动态库(libc.so之类的)外,不需要其它的库。