Chroot交叉编译未定义的符号

时间:2015-09-21 20:17:56

标签: c++ linux ubuntu gcc chroot

我正在尝试从Ubuntu 14.04“交叉编译”应用程序到Debian Wheezy 7.9(两者之间不兼容的libc版本)。我已经安装了我安装了debian Wheezy的chroot环境。我在Ubuntu上使用代码块进行编译。我已经设置了项目,所以我只使用来自chroot环境的东西(即gcc,libc等)。我也在使用-nodefaultlibs并用手链接所有内容。但即使这样,我也有未解决的符号,不知道它们来自何处。

/var/chroot/usr/lib/gcc/x86_64-linux-gnu/4.7/libgcc_s.so: undefined reference to `memcpy@GLIBC_2.14'
/var/chroot/usr/lib/x86_64-linux-gnu/librt.so: undefined reference to `__clock_getres@GLIBC_PRIVATE'
/var/chroot/usr/lib/x86_64-linux-gnu/librt.so: undefined reference to `__pthread_get_minstack@GLIBC_PRIVATE'
/var/chroot/usr/lib/x86_64-linux-gnu/librt.so: undefined reference to `__clock_gettime@GLIBC_PRIVATE'
/var/chroot/usr/lib/x86_64-linux-gnu/librt.so: undefined reference to `__clock_nanosleep@GLIBC_PRIVATE'
/var/chroot/usr/lib/x86_64-linux-gnu/librt.so: undefined reference to `__clock_getcpuclockid@GLIBC_PRIVATE'
/var/chroot/usr/lib/x86_64-linux-gnu/librt.so: undefined reference to `__clock_settime@GLIBC_PRIVATE'

/var/chroot/usr/lib/gcc/x86_64-linux-gnu/4.7/libgcc_s.so没有参考2.14(通过objdump查看)

这是我的命令行:

g++-4.7 -L../Debug
-L../dependencies/lib/debug
-L/var/chroot/usr/lib/gcc/x86_64-linux-gnu/4.7
-L/var/chroot/lib/x86_64-linux-gnu
-L/var/chroot/usr/lib/x86_64-linux-gnu
-L/var/chroot/usr/lib
-o ../Debug/xxx obj/Debug/src/xxx.o
-nostdlib -Wl,-t
 /var/chroot/usr/lib/x86_64-linux-gnu/crt1.o
 /var/chroot/usr/lib/x86_64-linux-gnu/crti.o
 /var/chroot/usr/lib/gcc/x86_64-linux-gnu/4.7/crtbegin.o
 -lboost_system-gcc47-mt-d-1_55
 -lboost_filesystem-gcc47-mt-d-1_55
 -lboost_program_options-gcc47-mt-d-1_55
 -lboost_thread-gcc47-mt-d-1_55
 -l:libpthread-2.13.so
 -lxxxD
 -l:libcrypto++.a
 -lgcc_s
 -lstdc++
 -lrt
 -lm
 -l:libc.so.6
 -l:libgcc.a
 -l:libc_nonshared.a
 -l:ld-linux-x86-64.so.2
 /var/chroot/usr/lib/gcc/x86_64-linux-gnu/4.7/crtend.o
 /var/chroot/usr/lib/x86_64-linux-gnu/crtn.o

boost库在chroot-ed环境中编译,并作为静态库。我已设置gcc / ld标志以完整路径打印所有链接的东西,实际上所有内容都是从chroot加载的。

有人知道会出现什么问题吗?我选择的路径是否可行?

0 个答案:

没有答案