Skip to main content

ld: unrecognized option '--hash-style=both'

gcc -Wl,-Map=contiki.map,-export-dynamic testv6.co obj_linux-native/socketdev_listener.o \
contiki-linux-native.a -o testv6.linux-native
/usr/local/bin/ld: unrecognized option '--hash-style=both'
/usr/local/bin/ld: use the --help option for usage information
collect2: ld returned 1 exit status


If you look closely, the error is something related to the local gcc not using the host's linker (ld).

$ which gcc
/usr/bin/gcc


$ which ld
/usr/local/bin/ld


For some reason, I messed my compiler path. To synchronized gcc to use the host's dynamic linker (i.e. /usr/bin/ld), set the environment variable COMPILER_PATH to /usr/bin.

$ export COMPILER_PATH=/usr/bin
$ echo $COMPILER_PATH
/usr/bin

$ gcc -print-prog-name=ld
/usr/bin/ld

Comments

Anonymous said…
it worked for me
Thanks
Anonymous said…
Thanks. It worked, but I have to do it every time I open a new terminal. Otherwise, the old error just kicks in. Is there a way to fix that?
Prem said…
Just do the assignment of COMPILER_PATH in your bash profile or system-wide /etc/profile
Anonymous said…
Thank you. I did what you said. After that, whenever I enter the command $gcc -print-prog-name=ld, the output become "ld" instead of "/usr/bin/ld", and I still get the same error message when I use the GCC compiler.

I'm running a Linux Redhat 2.6.
Prem said…
What is the output of `echo $COMPILER_PATH`?
Anonymous said…
The output is /usr/bin.
Anonymous said…
Also, I just found two problems with my system.

First, my error message is actually different from yours:

/usr/local/bin/ld: unrecognized option '--hash-style=gnu'
/usr/local/bin/ld: use the --help option for usage information
collect2: ld returned 1 exit status

Second, changing bashrc or profile in my computer doesn't seem to have any effect at all. I appended a new directory to PATH. The echo output shows the correct PATH (the changed one), but when I'm executing a command, bash will not search the appended directory.
Anonymous said…
Also, I just found two problems with my system.

First, my error message is actually different from yours:

/usr/local/bin/ld: unrecognized option '--hash-style=gnu'
/usr/local/bin/ld: use the --help option for usage information
collect2: ld returned 1 exit status

Second, changing bashrc or profile in my computer doesn't seem to have any effect at all. I appended a new directory to PATH. The echo output shows the correct PATH (the changed one), but when I'm executing a command, bash will not search the appended directory.
Anonymous said…
Sorry my bad. Changing path works.

But the first problem still exists.

Popular posts from this blog

Ebay scammer

+639056538210 09056538210 Gene Paminiano Claiming to be his wife: Ramona Carmen Paminiano City States savings account# 011-22-001124-3 TIP: Do not push with the transaction without hearing the seller/buyer's voice on the phone. Record the conversation for publicity purposes.

Ubuntu on Intel D945GCLF (with Intel Atom)

The rig: D945GCLF board Intel Atom @ 1.6GHZ w/HT It looks like it's a linux kernel bug: http://www.gossamer-threads.com/lists/linux/kernel/982159 The ethernet controller is: Realtek Semiconductor Co., Ltd. RTL8101E PCI Express Fast Ethernet controller (rev ff) does not seem to work in any of the Ubuntu versions. Fix: recompile the kernel with patch You can download my patched packages here (currently uploading, let me know if something is missing): http://mirakulo.com/pub/linux-image-2.6.24-21-patched/ NOTE: I got the .udeb packages because of this warning: dpkg-gencontrol: warning: deb package with udeb specific field Kernel-Version or you can do the following steps if you don't trust me: apt-get source linux-source-2.6.24 apt-get build-dep linux-source-2.6.24 aptitude install install devscripts build-essential fakeroot cd linux-2.6.24/ Get this patch: http://bugzilla.kernel.org/attachment.cgi?id=17604&action=view patch -p 1 debuild -us -uc -b Install the kernel that...