最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

[已解决]Program2.c:(.text+0x19): undefined reference to `foobar’

工作和技术 crifan 2151浏览 0评论

[问题]
近日,在用gcc编译程序的时候,出现如下错误:

crifan@ubuntu904:dynamicLink$ gcc -o Program2 Program2.c -L./Lib.so
/tmp/ccILCbZR.o: In function `main’:
Program2.c:(.text+0x19): undefined reference to `foobar’
collect2: ld 返回 1

很是诧异,因为记得,如果程序要用到别的库的时候,应该是用-L 或者-l的,去包含对应的库的,但是却一直出错。
以为是库类型不支持所导致的,所以又去换了库名,也不行:
crifan@ubuntu904:dynamicLink$ mv Lib.so Lib.a
crifan@ubuntu904:dynamicLink$ gcc -o Program2 Program2.c -LLib.a
/tmp/ccYbP4uM.o: In function `main’:
Program2.c:(.text+0x19): undefined reference to `foobar’
collect2: ld 返回 1
crifan@ubuntu904:dynamicLink$ gcc -o Program2 Program2.c -L./Lib.a
/tmp/ccO3ZAGc.o: In function `main’:
Program2.c:(.text+0x19): undefined reference to `foobar’
collect2: ld 返回 1

[解决]
后来,得知,这样不加-L或-l,直接后面加上库名,就可以编译通过了:
crifan@ubuntu904:dynamicLink$ ls
Lib.c  Lib.c~  Lib.h  Lib.so  Program1  Program1.c  Program2.c
crifan@ubuntu904:dynamicLink$ mv Lib.so Lib.a
crifan@ubuntu904:dynamicLink$ gcc -o Program2 Program2.c Lib.a
crifan@ubuntu904:dynamicLink$ gcc -o Program2 Program2.c Lib.so
gcc: Lib.so:没有该文件或目录
crifan@ubuntu904:dynamicLink$ mv Lib.a Lib.so
crifan@ubuntu904:dynamicLink$ gcc -o Program2 Program2.c Lib.so

[疑问]
看来是自己记错了,但是gcc编译的时候,何时要加-L或-l去包含所需要的库,有待详细研究。。。

转载请注明:在路上 » [已解决]Program2.c:(.text+0x19): undefined reference to `foobar’

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
79 queries in 0.148 seconds, using 22.10MB memory