ld: unknown option: -soname 【BINARYHACKS読書記録】

@igaiga555さんに誕生日プレゼントとして,BINARYHACKSを頂いたのでこの休日に読んでた.

Binary Hacks ―ハッカー秘伝のテクニック100選

Binary Hacks ―ハッカー秘伝のテクニック100選

共有ライブラリ作成のところで

cc -shared -Wl,-soname,libfoo.so.0 -o libfoo.so foo.o bar.o
=>
ld: unknown option: -soname
clang: error: linker command failed with exit code 1 (use -v to see invocation)

となってしまった.clangってなんだ...?と思ってググっていたら同じような現象になっていた人がいたので参考にして解決したのでその対処法をメモ.なんでも

対処したこと

このエントリでは解決できていないので気をつけてください...(現在方法を模索中です)

Command Line Toolのインストール

xcode-select --install

上記のコマンドでできるらしいですが,私の場合は「このソフトウェアは、現在ソフトウェア・アップデート・サーバから入手できないため、インストールできません。」って言われてダメだったので

http://developer.apple.com/downloads/index.action?name=for%20Xcode%20-

からdmgをダウンロードしてきて入れた.

aliasを貼る

今のままだと

gcc
=>
clang: error: no input files

となっていたので,aliasを貼る.私はzshを使っているので.zshrcに以下を記述.

cc='gcc-4.2'

CLTをインストールするとデフォルトでgcc-4.2が入っていたのそれを使った.これでイケるかなーと思いきや

cc -shared -Wl,-soname,libfoo.so.0 -o libfoo.so foo.o bar.o
=
ld: unknown option: -soname
collect2: ld returned 1 exit status

今度はclangじゃないエラーが出てきた... というわけで何時間も潰しましたが解決してない...

ちなみに

-sonameinstall_nameにするとclangでも共有ライブラリ作れるっぽい. でも本の説明はclangが前提じゃないから,後々面倒くさそうなので早めに設定しておきたい.