我是gcc编译器的新手。
我的朋友为我写了这个脚本(图形过滤器)但我不能使用它,因为我收到了一些错误。
我有2个目录和一个C文件:
-dir- include --> basics.h common.h freeimage.h hqx.h imageIO.h pcxIO.h
-dir- lib --> libfreeimage-3.13.1.so libfreeimage.a libfreeimage.so.3 libhqx.a libhqx.so libhqx.so.1 libhqx.so.1.0.0
scaling.c
我尝试使用此命令进行编译:
gcc scaling.c -I./include -L./lib -lm -lfreeimage -lhqx -lstdc++ -o filter
但是我收到了这个错误:
/usr/lib/gcc/i486-slackware-linux/4.2.4/../../../../i486-slackware-linux/bin/ld:./lib/libhqx.so: file format not recognized; treating as linker script
/usr/lib/gcc/i486-slackware-linux/4.2.4/../../../../i486-slackware-linux/bin/ld:./lib/libhqx.so:1: syntax error
collect2: ld returned 1 exit status
提前致谢,对不起我的英语。
答案 0 :(得分:6)
链接器会将任何看起来不像目标文件或库的文件视为包含命令的链接描述文件,以指定应如何进行链接。加载地址,部分定义等等。
显然libhqx.so看起来不像你系统上的共享库。我认为它是建立在你朋友的系统上的?
要了解文件的内容,请使用file命令。你应该得到类似的东西:
main% file /lib/libc-2.11.2.so
/lib/libc-2.11.2.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped
如果没有,您将必须构建或找到与您的系统兼容的库。
答案 1 :(得分:3)
昨天我遇到了类似的问题,我认为你的libhqx.so是你朋友机器上的libhqx.so.1.0.0或libhqx.so.1的符号链接,当你复制这些文件时,这个链接坏了。 (至少那是我们系统中的情况,我们删除.so文件并创建正确的符号链接后问题就解决了)