gcc 静态链接的问题

zhang_water 2009-05-21 09:34:43
很诡异,谁解释下?

下面的写法可以通过编译:(使用动态库)

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中写法) 有什么不同?为什么前者无法通过编译而后者可以呢?
...全文
93 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
liliangbao 2009-05-25
  • 打赏
  • 举报
回复
学习~
johndiyang 2009-05-23
  • 打赏
  • 举报
回复
赞同8楼。
代码实现有问题。
morris88 2009-05-23
  • 打赏
  • 举报
回复
貌似 gcc 要求 -l 指定的库要作为命令行的最后参数;
否则将根据系统缺省配置,找动态库;
很明显,你指明了 -static,是不会找动态库的,那么
链接时就会报告函数解析错误

zhouxingyu896 2009-05-23
  • 打赏
  • 举报
回复
学习
mymtom 2009-05-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 morris88 的回复:]
Perl code#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

行不
[/Quote]
三楼的意思是把-lSDL放在最后试试。
morris88 2009-05-21
  • 打赏
  • 举报
回复
不是 ubb,是插入代码,然后将代码插入在[] ... [] 之间
zhang_water 2009-05-21
  • 打赏
  • 举报
回复
[code=BatchFile]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 [/code]

[code=BatchFile]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[/code]

[code=BatchFile]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[/code]
morris88 2009-05-21
  • 打赏
  • 举报
回复
# 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


行不
zhang_water 2009-05-21
  • 打赏
  • 举报
回复
[code=Batchfile]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 [/code]

[code=Batchfile]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[/code]

[code=Batchfile]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[/code]
zhang_water 2009-05-21
  • 打赏
  • 举报
回复
自己顶下,UBB不太会用,抱歉了。

23,124

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧