問題タブ [ld]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
14799 参照

c - GCC を使用してコンパイルされた C ファイルで出力セクションを指定するにはどうすればよいですか?

アセンブリ言語では、.section ディレクティブを使用して、出力するセクションをアセンブラに指示します。

Cファイルで同じことをする方法はありますか? 一部のファイルのコードを別のセクションに入れて、別のメモリ アドレスにロードできるようにします。ld 用のスクリプトを作成してそこにセクションを指定できることはわかっていますが、そうしたくありません。これを行うCファイル用のコンパイラスイッチまたは.sectionディレクティブのようなものはありますか?

0 投票する
2 に答える
3204 参照

c++ - Codesourcery lite ツールチェーンを使用してホストされていない LM3S8962 の C++ プログラムのリンカー スクリプト?

Stellaris LM3S8962 ボード専用のリンカー スクリプトを持っている人、または作成方法を説明できる人はいますか? 私は codesourcery g++ lite ツールチェーンを使用しており、このリンカー スクリプトを使用してホスト環境用の elf ファイルを正常に作成できます。

これは、ホストされていないライブラリでは機能しません。私が見つけたすべての例は C でのみ動作し、C++ では動作せず、cs3 スタートアップ コードに関していくつかの魔法が関与しているようです。どんな助けでも感謝します。

ありがとう、マイク

0 投票する
1 に答える
256 参照

c - サードパーティライブラリを使用するCプログラムの成熟したビルドプロセスを設定する方法(APR-Apache Portability Runtime)

私は、多数のファイルで構成され、APR(http://apr.apache.org)を使用するCプログラムを作成しました。これにはヘッダーが含まれており、ライブラリの動的リンクを希望します。

私の問題は、現在、開発サイトで設定されているAPRヘッダーへのパスと、見つけた静的APRライブラリのパスの両方をハードコーディングしていることです。

これは私のMakefileがどのように見えるかです(私はいくつかのビットの名前を変更しました):

明らかに、APR静的ライブラリファイルの名前はですがlibapr-1.a、私も持ってlibapr-1.soおりlibapr-1.so.0、それlibapr-1.laが何であるかさえわかりません。したがって、事実上、私は現在APRに静的にリンクしているのではないかと思います。立派なビルドシステムという私の目標とは別に、APRに動的にリンクしたいと思います。

現在私だけでなく、他の人が私のプログラムをビルドするのに十分な柔軟性を備えた自動ビルドをセットアップするための一般的な方法はありますか?の近くの匂いがしますautotoolsが、私は彼らとの経験がまったくないので、今のところ次善の策に落ち着きたいです。どのようなオプションがありますか?

0 投票する
2 に答える
7098 参照

c++ - ライブラリ間の依存関係を判断する方法は?

私のプロジェクトは、いくつかの静的ライブラリで構成されており、最終ステップでリンクされています。ライブラリのリンク順序が重要であるという問題があります(そうしないと、未定義のシンボルリンカエラーが発生します)。リンクされたライブラリ (-lcommon -lsetup -lcontrol など) を再ソートする必要があるという問題が発生することがあります。現時点では、再ソート、コンパイル、エラーのチェック、再ソート、コンパイルなどの愚かな試行錯誤です。

そこで、ライブラリ間の依存関係を示し、リンクするライブラリの順序を生成する小さなプログラムを作成しました。nmから定義済み ('T'、'B' など) および未定義のシンボル ('U') を読み込み、弱いシンボル('w'、'W'、'v'、'V')をnmから削除します。 「未定義のシンボル リスト」。現在、未定義のシンボルごとに、それを解決するライブラリを決定します。

しかし、私のプログラムは循環依存関係を示しています...私の間違いは何ですか?

それらが本当に存在する場合、私はまったくリンクできませんでした...それで、nm出力を分析するときに何が欠けていましたか? または、これらの依存関係を取得するために nm 出力を分析する方法はありませんか?

0 投票する
1 に答える
2529 参照

shared-libraries - binutils で再配置可能な共有ライブラリを作成する

再配置可能な共有ライブラリを生成するカスタム ツールチェーンがあります。これは、これらをメモリにロードして修正する、同様にカスタムの ELF ローダーで動作します。私は現在、gcc と binutils を説得して、このローダーと互換性のある ELF ファイルを作成しようとしています。

残念ながら、binutils は再配置可能な共有オブジェクトの生成を拒否しているようです。PIC 共有オブジェクトを生成しますが、GOT/PLT の余分なオーバーヘッドがあるため、これを行いたくありません (さらに、カスタム ELF ローダーはそれをサポートしていません)。また、再配置可能なオブジェクトを生成しますが、それらは動的オブジェクトではないため、ELF ローダーがそれらをロードできるようにするための適切なセクションがありません。

GNU ld が、同じコマンド ラインで --reocatable と -shared を指定することを拒否する理由がよくわかりません。誰でも私を啓発できますか?そして、私が探しているオブジェクトファイルをldに生成させる呪文を知っている人はいますか?

0 投票する
1 に答える
1790 参照

ruby-on-rails - autotest-fsevent または rs-fsevent をインストールできません。ldエラーが発生していますが、xcodeがインストールされています

ここに私が得ているものがあります:

$ sudo gem install autotest-fsevent パスワード: ネイティブ拡張のビルド。これには時間がかかる場合があります... エラー: autotest-fsevent のインストール中にエラーが発生しました: エラー: gem ネイティブ拡張機能をビルドできませんでした。

/Volumes/SSD/Users/Ross/.rvm/rubies/ruby-1.9.2-p136/bin/ruby extconf.rb ld: 出力ファイルを書き込み用に開けません: /Volumes/Macintosh HD/Users/Ross/. rvm/rubies/ruby-1.9.2-p136/lib/ruby/gems/1.9.1/gems/autotest-fsevent-0.2.4/bin/fsevent_sleep, errno=2 collect2: ld が 1 つの終了ステータスを返しました extconf.rb: 30:`': fsevent_sleep のコンパイルに失敗しました (README を参照) (RuntimeError)

README には次のように書かれています。

トラブルシューティング:

fsevent_sleep のコンパイルに失敗しました

Xcode (Mac OS X Development Suite) がインストールされていることを確認してください。

最新のxcodeをインストールし、何かが足りない場合に備えて再インストールしました。

少なくともこれをさらにトラブルシューティングする方法を知っている人は誰でも。パスに関連している可能性があると誰かが聞いたことがあります。しかし、ここにパスに関する情報があります。マシンには 2 つのドライブがあります。OS を搭載した SSD と、すべてのデータを格納した HDD です。/Volumes/SSD/Users/Ross/ホーム ディレクトリのSSDにシンボリック リンクがあるので、/Volumes/Macintosh HD/Users/Ross それが問題ですか? ボリューム名のスペースが問題でしょうか? どうすればこれを回避できますか?

0 投票する
1 に答える
138 参照

iphone - libisimulate を削除しましたが、コンパイルすると警告が表示されます。どうしたの?

だから私はこれをインストールしました:http://www.vimov.com/isimulate/その後、もう必要ないので削除しました。しかし、今ではコンパイルするたびに次の警告が表示されます。

ld: 警告: ディレクトリ '/Users//../../Downloads/libisimulate-4.x-1.5-20100925-opengl' に続く -L が見つかりません

すべて削除しました。ファインダーで「isim」を含むものを検索しましたが、何も見つかりませんでした。どうしたの?

編集:そして、それは何かを言いますProject <App name> Configuration Debug

0 投票する
2 に答える
1358 参照

c++ - LD_PRELOADヘルプ

LD_PRELOADを使おうとしています。

original.cpp

hacked.cpp

original.cppをコンパイルします:

そしてhacked.cpp:

私は試してみます:

「HellomyPuts」が表示されると、「HellohackedmyPuts」という文字列が表示されます。(puts関数を「上書き」しようとすると、正しく機能します)

私は何が欠けていますか?

0 投票する
1 に答える
840 参照

iphone - 重複シンボル リンカ エラー XCode 3.2.5 -- リンカが同じファイルを異なる方法で参照しているようです

次のエラーが表示されます。

ld: /Users/macuser/Dropbox/DFJ/three20/Build/Products/Debug-iphoneos/libThree20Core.a(TTGlobalCore.o) および ../three20/Build/Products/Debug-iphoneos/libThree20Core.a でシンボル _TTCreateNonRetainingArray を複製(TTGlobalCore.o) collect2: ld が 1 の終了ステータスを返しましたコマンド /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++-4.2 が終了コード 1 で失敗しました

絶対パスと相対パスから同じ .o を参照しているようです。

ld build/DFJ.build/Debug-iphoneos/DFJ.build/Objects-normal/armv6/DFJ normal armv6 cd /Users/macuser/Dropbox/DFJ/DFJ setenv IPHONEOS_DEPLOYMENT_TARGET 3.2 setenv PATH "/Developer/Platforms/iPhoneOS.platform/ Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++-4.2 -arch armv6 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk -L/Users/macuser/Dropbox/DFJ/DFJ/build/Debug-iphoneos -F/Users/macuser/Dropbox/DFJ/DFJ /build/Debug-iphoneos -F/Users/macuser/Dropbox/DFJ/DFJ/../../../Downloads/gdata-objectivec-client-1.11.0/Source/build/Debug -filelist /Users/ macuser/Dropbox/DFJ/DFJ/build/DFJ.build/Debug-iphoneos/DFJ.build/Objects-normal/armv6/DFJ.LinkFileList -dead_strip -force_load ../three20/Build/Products/Debug-iphoneos/libThree20Core.a -force_load ../three20/Build/Products/Debug-iphoneos/libThree20UICommon.a -force_load ../three20/Build/Products/Debug-iphoneos/libThree20Launcher.a -force_load ../three20/Build/Products/Debug-iphoneos/libThree20UINavigator.a -force_load ../three20/Build/Products/Debug-iphoneos/libThree20.a -force_load ../three20/Build/Products/Debug-iphoneos /libThree20UI.a -force_load ../three20/Build/Products/Debug-iphoneos/libThree20Network.a -force_load ../three20/Build/Products/Debug-iphoneos/libThree20Style.a -all_load -miphoneos-version-min=3.2 /Users/macuser/Dropbox/DFJ/three20/Build/Products/Debug-iphoneos/libThree20Core.a /Users/macuser/Dropbox/DFJ/three20/Build/Products/Debug-iphoneos/libThree20UICommon./Users/macuser/Dropbox/DFJ/three20/Build/Products/Debug-iphoneos/libThree20Launcher.a /Users/macuser/Dropbox/DFJ/three20/Build/Products/Debug-iphoneos/libThree20UINavigator.a /Users/macuser/ Dropbox/DFJ/three20/Build/Products/Debug-iphoneos/libThree20.a /Users/macuser/Dropbox/DFJ/three20/Build/Products/Debug-iphoneos/libThree20UI.a /Users/macuser/Dropbox/DFJ/three20/ Build/Products/Debug-iphoneos/libThree20Network.a /Users/macuser/Dropbox/DFJ/three20/Build/Products/Debug-iphoneos/libThree20Style.a -framework QuartzCore -framework Foundation -framework UIKit -framework CoreGraphics -lsqlite3.0 -フレームワーク MobileCoreServices -lxml2 -フレームワーク セキュリティ -フレームワーク システム構成 -フレームワーク OpenAL -フレームワーク CoreAudio -フレームワーク AudioToolbox -o /Users/macuser/Dropbox/DFJ/DFJ/build/DFJ.build/Debug-iphoneos/DFJ.build/Objects-normal/armv6/DFJ

ld: /Users/macuser/Dropbox/DFJ/three20/Build/Products/Debug-iphoneos/libThree20Core.a(TTGlobalCore.o) および ../three20/Build/Products/Debug-iphoneos/libThree20Core.a でシンボル _TTCreateNonRetainingArray を複製(TTGlobalCore.o) collect2: ld が 1 の終了ステータスを返しましたコマンド /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++-4.2 が終了コード 1 で失敗しました

0 投票する
1 に答える
10999 参照

c++ - /usr/bin/ld: 警告: xyz.so が必要とする abc.so が見つかりません (-rpath または -rpath-link を使用してみてください)"

Netbeans 6.9 を IDE として使用して、C++ アプリケーションを構築しています。純粋な C ライブラリのラッパーである C++ ライブラリがあります。

プロジェクトにファイルを正しく追加しました ([ライブラリ ファイルの追加] オプションを使用)。g++ とリンカーによって生成される出力は次のとおりです。

C++ ラッパー ライブラリで ldd を実行すると、次の出力が得られました。

そのため、ファイルはマシンに存在しますが、ライブラリ キャッシュにはないようです。ldconfig を使用してみましたが、問題は残ります。これを解決する方法についてのアイデアはありますか?