我正在尝试从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加载的。
有人知道会出现什么问题吗?我选择的路径是否可行?