在Ubuntu 18.04.2 LTS上获取“对“ memcpy@GLIBC_2.14的未定义引用””

时间:2019-02-21 17:01:51

标签: linux gcc memcpy

我正在运行Ubuntu 18.04.2 LTS,并尝试使用gcc构建一些代码并出现以下错误:

/usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/lib/../lib/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
/lib64/libgcc_s.so.1: undefined reference to `memcpy@GLIBC_2.14'
collect2: error: ld returned 1 exit status

我认为问题不在于项目,而在于试图使用GLIBC版本的目标文件在我的系统上不可用,但是是我系统的一部分。

目标文件是/usr/x86_64-linux-gnu/lib/crt1.o版本2.27-3ubuntu1cross1.1的libc6-dev-amd64-cross一部分。

我对gcc不太熟悉,似乎我不能仅仅拉出libc 2.14并进行构建。

我被困住了。

我应该检查什么?我需要为gcc使用一个选项吗?也许这是我的发行版中的问题?


更多信息:

# readlink -f /usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/lib/../lib/crt1.o
/usr/x86_64-linux-gnu/lib/crt1.o

# file /usr/x86_64-linux-gnu/lib/crt1.o
/usr/x86_64-linux-gnu/lib/crt1.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), for GNU/Linux 3.2.0, not stripped

# apt-file search /usr/x86_64-linux-gnu/lib/crt1.o
libc6-dev-amd64-cross: /usr/x86_64-linux-gnu/lib/crt1.o

# dpkg -l | grep libc6-dev-amd64-cross
ii  libc6-dev-amd64-cross  2.27-3ubuntu1cross1.1  [...]

# objdump -t /usr/x86_64-linux-gnu/lib/crt1.o

/usr/x86_64-linux-gnu/lib/crt1.o:     file format elf64-x86-64

SYMBOL TABLE:
0000000000000000 l    d  .text  0000000000000000 .text
0000000000000000 l    d  .note.ABI-tag  0000000000000000 .note.ABI-tag
0000000000000000 l    d  .rodata.cst4   0000000000000000 .rodata.cst4
0000000000000000 l    d  .eh_frame      0000000000000000 .eh_frame
0000000000000000 l    d  .data  0000000000000000 .data
0000000000000000 l    d  .bss   0000000000000000 .bss
0000000000000000 l    d  .note.GNU-stack        0000000000000000 .note.GNU-stack
0000000000000000         *UND*  0000000000000000 __libc_csu_fini
0000000000000030 g     F .text  0000000000000002 .hidden _dl_relocate_static_pie
0000000000000000 g     F .text  000000000000002b _start
0000000000000000         *UND*  0000000000000000 __libc_csu_init
0000000000000000         *UND*  0000000000000000 main
0000000000000000  w      .data  0000000000000000 data_start
0000000000000000         *UND*  0000000000000000 _GLOBAL_OFFSET_TABLE_
0000000000000000 g     O .rodata.cst4   0000000000000004 _IO_stdin_used
0000000000000000         *UND*  0000000000000000 __libc_start_main
0000000000000000 g       .data  0000000000000000 __data_start

# gcc --version
gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
[...]

# ldd --version
ldd (Ubuntu GLIBC 2.27-3ubuntu1) 2.27
[...]

编辑1:我已经检查了this问题,但是由于crt1.o不是我编译的对象,而是Ubuntu安装的系统软件包的一部分,我认为无法重新编译它。但是我可能错了,我对gcc并不真正熟悉。

0 个答案:

没有答案