私はそれを作ることだった解決方法そうに捕まってしまった文字列ライブラリー(実行時にライブラリーを見つける場所)はどこにも相対的ではありません。 LD_LOAD_PATHを使用するように強制されます。
他のフラグを使用していた人がいました。
ので、私が使用して終了gccがこれです:
# my tree is like this
# cata/*.c
# build/*.dylib
#
cd build
gcc -arch i386 ../cata/*.c -dynamiclib -o cata.dylib
は、これを行う/は、それはそれは(基本的には、パスを持っていない)「を使用」は思っ同じディレクトリにライブラリを作るコンパイルします。私は今どこか別の場所に自由に置くことができます。後でコンパイル時に別のプログラムでリンクされた後に、
otool -L
と表示され、ライブラリ名の前にパスがないと表示されます。これは明らかに、システムが標準ライブラリを見て、最終的にそれを見つけようとするときに好まれます(標準の場所の1つにインストールするので)。 -Lこれは、それが未発見できる作られた私は、問題を回避するためにリンゴのドキュメントを使用しようとしていた理由である
'build/cata.dylib'
の必要な経路を有することを示したコマンドotoolオリジナルのように
、 。
これはLC_ID_DYLIBが機能しない理由を実際には解決しません。私はLoader.hファイル(643行目)を見て、識別子(0xd)、パス、構造体のための余地があるので、なぜ私のパスが拾われなかったのか分かりません。しかし、その2つの異なるトピック。 Loader.hはランタイムで、もう1つはgcc AFAIKです。私はまだリンゴを学んでいます。
出典
2016-03-22 21:46:19
Div
と 'gcc'の間にある' -L'は、ライブラリを含むディレクトリへのパスを含むことが期待されるパラメータの先頭です。投稿された行がしようとしているように、環境変数を '/ usr/lib'に設定しています。それは正しくありません。 '-LC_ID_DYLIB'とは何ですか?プログラムでどのように使用されていますか? – user3629249
パラメータ: '-dynamiclib'も有効なパラメータではありません。' http:// tigcc.ticalc.org/doc/comopts.html'ページを読むことをお勧めします。このページには、gccのすべての有効なパラメータがリストされています。 '-static'パラメータの使用とそのパラメータを使用しないことの違いを調べることができます。 – user3629249
こんにちは、私のリンゴの開発者ガイドは両方のパラメータを使用するようにうまくいたと述べているようです。しかし、私は今それの回避策を持っているようです。私がビルドしようとしている動的ライブラリは、動的ロード文字列に 'build/cata.dylib'というパスを継承しています。 - それを使用したいものは、それらがどこにあるのかに関連して、 'build/cata.dylib'でそれを見つけなければなりません。非常に不便です。私はそれをどのように解決したか自分でそれに答えるだろう。 – Div