Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 无法识别文件格式;作为链接器脚本处理_C_Gcc_Gnu - Fatal编程技术网

C 无法识别文件格式;作为链接器脚本处理

C 无法识别文件格式;作为链接器脚本处理,c,gcc,gnu,C,Gcc,Gnu,我是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 lib

我是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

提前感谢并为我的英语感到抱歉。

链接器会将任何看起来不像对象文件或库的文件视为链接器脚本,其中包含指定链接方式的命令。加载地址、节定义等

显然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

如果没有,您将不得不构建或找到一个与您的系统兼容的库。

我昨天遇到了类似的问题,我认为您的libhqx.so是到您朋友机器中libhqx.so.1.0.0或libhqx.so.1的符号链接,当您复制此文件时,此链接已断开。(至少这是我们系统中的情况,在我们删除.so文件并创建正确的符号链接后问题就解决了)

感谢您的回答。是的,Libhqx.so是建立在我朋友的系统上的。我是一个新手,我遵循我朋友的指示。可以使用以下命令共享lib:
echo”/dir/lib“>/etc/ld.so.conf/sbin/ldconfig
,当动态链接器找不到.so文件时,这将导致运行时错误,但不会解决您的问题。在遇到运行时错误之前,必须先链接程序。;-)