目前,我正在开展一项项目,以便从西门子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标志,所以我无法在那里设置我的链接器。
答案 0 :(得分:0)
你可以交叉编译并运行“hello world”程序吗?
file ../temp/mips-openwrt-linux/sys_snap_msgsock.o
的输出是什么?