使用OpenWrt作为操作系统交叉编译Snap7 for MIPS

时间:2014-06-05 09:46:04

标签: linux cross-platform mips cross-compiling openwrt

目前,我正在开展一项项目,以便从西门子PLC中记录数据。要实现这一点,我正在使用Snap7。 Snap7(http://snap7.sourceforge.net/)是一个通信库。

我已经设法让它在我的linux桌面上运行但是当我尝试交叉编译snap7库时出现了一些错误

链接所有目标文件时会生成错误。

g++ -shared -fPIC -o ../bin/mips-openwrt-linux-g++/libsnap7.so @"filelist.txt" -L.  -lpthread -lrt  -O3
/usr/bin/ld: ../temp/mips-openwrt-linux/sys_snap_msgsock.o: Relocations in generic ELF (EM: 8)
./temp/mips-openwrt-linux/sys_snap_msgsock.o: could not read symbols: File in wrong format
collect2: error: ld returned 1 exit status
make: *** [../bin/mips-openwrt-linux-g++/libsnap7.so] Error 1

如果我是正确的,我认为它使用了错误的链接器,它应该使用工具链的链接器:openwrt / staging_dir / toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2 / bin /

我也尝试使用mips-openwrt-linux-g ++编译软件。 现在又出现了另一个错误:

mips-openwrt-linux-g++ -shared -fPIC -o ../bin/mips-openwrt-linux-g++/libsnap7.so @"filelist.txt" -L.  -lpthread -lrt  -O3
openwrt/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/lib/gcc/mips-openwrt-linux-uclibc/4.8.3/../../../../mips-openwrt-linux-uclibc/bin/ld: ../temp/mips-openwrt-linux/sys_snap_msgsock.o: relocation R_MIPS_26 against `close' can not be used when making a shared object; recompile with -fPIC
../temp/mips-openwrt-linux/sys_snap_msgsock.o: could not read symbols: Bad value
collect2: error: ld returned 1 exit status
make: *** [../bin/mips-openwrt-linux-g++/libsnap7.so] Error 1

我希望有人熟悉这个错误,可以帮助我。

提前致谢。

EDIT1: 有一些预编译的二进制文件。在makefile中,我将CC更改为我的g ++目录。没有LD标志,所以我无法在那里设置我的链接器。

1 个答案:

答案 0 :(得分:0)

你可以交叉编译并运行“hello world”程序吗?

file ../temp/mips-openwrt-linux/sys_snap_msgsock.o的输出是什么?