如何得知GCC默认链接的标准库? 50

如果让gcc默认编译加连接生成可执行文件test没有问题运行也正常test:gcchello.c-otest但如果想自己先编译.o,再用ld链接,all:gcc$(USR... 如果让gcc默认编译加连接 生成可执行文件test没有问题 运行也正常
test:
gcc hello.c -o test
但如果想自己先编译.o,再用ld链接,
all:
gcc $(USR_CMD) -c hello.c -o hello.o
ld --start-group -static -L$(GCC_LIB_PATH) $(ENV_LIB_PRE) -lgcc hello.o $(ENV_LIB_POST) --end-group -o hello
就是各种链接错误(有时候根据手册 能配对,但是有的编译器没有对应的手册或者找不到)
c:/MinGW/lib/crt1.o:crt1.c:(.text+0x38): undefined reference to `signal'
c:/MinGW/lib/crt1.o:crt1.c:(.text+0x9c): undefined reference to `signal'
c:/MinGW/lib/crt1.o:crt1.c:(.text+0xcc): undefined reference to `signal'
c:/MinGW/lib/crt1.o:crt1.c:(.text+0xd9): undefined reference to `_fpreset'
c:/MinGW/lib/crt1.o:crt1.c:(.text+0xf0): undefined reference to `signal'
c:/MinGW/lib/crt1.o:crt1.c:(.text+0x120): undefined reference to `signal'
c:/MinGW/lib/crt1.o:crt1.c:(.text+0x13a): undefined reference to `signal'
……………………………………
,而且感觉每个版本编译器的所需链接库完全不一样

现在想问的就是 GCC有没有一个指令 告诉我它默认编译加连接时候 到底用了什么库
展开
 我来答
小明332
2014-05-26 · TA获得超过101个赞
知道答主
回答量:63
采纳率:0%
帮助的人:62.6万
展开全部
可能跟库的顺序有关,,具有signal符号的库放在了需要该符号的库的前面,,ld有一个选项可以对库循环查找,我忘了是什么了,自己查手册
追问
不知道别乱说!
追答
我只是说一下可能性,你这态度 活该问不到答案
三人从师
2015-05-24 · TA获得超过183个赞
知道小有建树答主
回答量:221
采纳率:0%
帮助的人:130万
展开全部
我遇到过这几种可能:
1.函数确实只有声明未实现。
2.生成的静态归档文件相互之间有依赖,链接需要先后顺序,依赖的要放在被依赖的前面。
3.需要标准库支持。
在你的表述中好像不应该是第2种情况,因为--start-group --end-group 会自动在之间的库文件循环查找的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
winsen18
2016-02-05 · 超过12用户采纳过TA的回答
知道答主
回答量:63
采纳率:100%
帮助的人:19.3万
展开全部
是库引用问题,引用正确的库可以解决大部分“undefined reference”问题。命令中虽然加入了库目录-L$(GCC_LIB_PATH)
,却没有具体引用哪个库,这就是原因。如引用libuser32.a库只要加入这个参数就可以了:-luser32
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
欧几里喵
2014-11-01 · 知道合伙人互联网行家
欧几里喵
知道合伙人互联网行家
采纳数:0 获赞数:6
精通 JAVA/Scala/Typescript/Rust

向TA提问 私信TA
展开全部
  /**
  The -v option to gcc will cause it to dump information about the default options it will use including the library paths and default libraries and object files that will be linked in.
  If you give the -Wl,--verbose option, gcc will pass the --verbose to the linker which will dump exactly where it's looking for libraries, including both failed and successful searches.
  Combine both options, and you'll see exactly what libraries are linked in, and why they're being linked in.
  gcc -v hello.c -Wl,--verbose
  
  */
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式