当前位置: 技术问答>linux和unix
gcc 静态链接的问题
来源: 互联网 发布时间:2016-06-08
本文导语: 很诡异,谁解释下? 下面的写法可以通过编译:(使用动态库) 1) arm_XXXX_linux_gcc -I $install_root_dir/include -I $install_root_dir/include/SDL/ -L $install_root_dir/lib -lSDL -o testwin testwin.c 但是下面的写法无法通过编译: 2) arm_...
很诡异,谁解释下?
下面的写法可以通过编译:(使用动态库)
1)
但是下面的写法无法通过编译:
2)
而下面的写法可以通过编译:
3)
也就是说, -Lsome -static (第2中写法) 和 把 libsome.a 作为 gcc 的输入源
文件(第3中写法) 有什么不同?为什么前者无法通过编译而后者可以呢?
下面的写法可以通过编译:(使用动态库)
1)
arm_XXXX_linux_gcc -I $install_root_dir/include -I
$install_root_dir/include/SDL/ -L $install_root_dir/lib -lSDL -o testwin
testwin.c
但是下面的写法无法通过编译:
2)
arm_XXXX_linux_gcc -I $install_root_dir/include -I
$install_root_dir/include/SDL/ -L $install_root_dir/lib -lSDL -static -o
testwin testwin.c
而下面的写法可以通过编译:
3)
arm_XXXX_linux_gcc -I $install_root_dir/include -I
$install_root_dir/include/SDL/ -o testwin testwin.c
$install_root_dir/lib/libSDL.a
也就是说, -Lsome -static (第2中写法) 和 把 libsome.a 作为 gcc 的输入源
文件(第3中写法) 有什么不同?为什么前者无法通过编译而后者可以呢?
|
貌似 gcc 要求 -l 指定的库要作为命令行的最后参数;
否则将根据系统缺省配置,找动态库;
很明显,你指明了 -static,是不会找动态库的,那么
链接时就会报告函数解析错误
否则将根据系统缺省配置,找动态库;
很明显,你指明了 -static,是不会找动态库的,那么
链接时就会报告函数解析错误
|
# arm_XXXX_linux_gcc -I $install_root_dir/include -I
$install_root_dir/include/SDL/ -L $install_root_dir/lib -static -o
testwin testwin.c -lSDL
行不
|
三楼的意思是把-lSDL放在最后试试。
|
赞同8楼。
代码实现有问题。
代码实现有问题。