file format not recognized; treating as linker script

26,943

Solution 1

The linker will treat any file that doesn't look like an object file or library as a linker script containing commands to specify how linking should be done. Things like load addresses, section definitions, etc.

Apparently libhqx.so doesn't look like a shared library on you system. I assume it was built on your friend's system?

To get a clue about what the file is, use the file command. You should get something like:

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

If not, you'll have to build or find a library compatible with your system.

Solution 2

I had a similar problem yesterday, and I think your libhqx.so was a symbolic link to libhqx.so.1.0.0 or to libhqx.so.1 in your friend's machine, and when you copied this files, this link had broken. (at least that was the situation in our system, and the problem solved after we remove the .so file, and create the right symbolic link)

Share:
26,943
MarcoD
Author by

MarcoD

Updated on February 27, 2020

Comments

  • MarcoD
    MarcoD about 4 years

    i'm new on gcc compiler.

    My friend wrote this script (graphic filter) for me but i can't use it because i receive some error.

    I have 2 directory and a C file:

    -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
    

    i try to compile with this command:

    gcc scaling.c -I./include -L./lib -lm -lfreeimage -lhqx -lstdc++ -o filter
    

    But i receive this error:

    /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
    

    Thanks in advance and sorry for my english.

  • MarcoD
    MarcoD about 13 years
    Thanks for your answer Richard. Yes, Libhqx.so was build on my friend's system. I'm very newbie and i follow the instruction of my friend.
  • MarcoD
    MarcoD about 13 years
    Is possible to share lib with this command: echo "/dir/lib" >> /etc/ld.so.conf /sbin/ldconfig
  • Richard Pennington
    Richard Pennington about 13 years
    That would work for a run-time error when the .so file can't be found by the dynamic linker, but won't solve your problem. You have to get your program linked before you'll run into the run-time error. ;-)