タグ付けされた質問 「linker」

2
64ビットシステムで32ビットバイナリを実行しているときに「Not found」メッセージが表示される
現在、debian(wheezy / amd64)に奇妙な問題があります。 サーバーをインストールするためにchrootを作成しました(詳細については説明できませんが、申し訳ありません)。そのパスを呼び出しましょう/chr_path/。物事を簡単にするために、このchrootをdebootstrap(wheezy / amd64も)で初期化しました。 すべてはchroot内でうまく機能しているように見えましたが、サーバーのインストーラースクリプトを起動したとき、次のようになりました:( zsh: Not found /some_path/perlインストーラーには何らかの理由でperlバイナリが含まれています) 当然、/some_path/場所を確認し、「perl」バイナリを見つけました。filechroot環境では以下を返します。 /some_path/perl ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.2.5, not stripped ファイルが存在し、問題ないようで、正しい権限があります。使用できますfileがls、vimそれを実行しようとするとすぐに- ./perl例えば-私は得る:zsh: Not found ./perl。 この状況は私にはかなり理解できます。さらに: エラーを発生させることなく、chrootで他の基本的なバイナリ(/ bin / ls、...)を実行できます。 プロジェクトに付属している他のバイナリにも同じ問題があります メインルート(/chr_path/some_path/perl)からバイナリを実行しようとすると、動作します。 私は私のバイナリのコピーでバイナリの1つを入れようとしましたls。アクセス権が同じであることを確認しましたが、これは何も変更しませんでした(1つは機能していましたが、もう1つは機能していませんでした)

1
Unixでストリップされ、実行されない実行可能ファイルとは何ですか?
manファイルから、 EXAMPLES $ file file.c file /dev/{wd0a,hda} file.c: C program text file: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), stripped /dev/wd0a: block special (0/0) /dev/hda: block special (3/0) $ file -s /dev/wd0{b,d} /dev/wd0b: data /dev/wd0d: x86 boot sector $ file -s /dev/hda{,1,2,3,4,5,6,7,8,9,10} /dev/hda: …

2
特定の実行可能ファイルのリンクライブラリを変更する(CentOs 6)
このようにリンクされた実行可能ファイルがあります: $ ldd a.out libboost_system-mt.so.1.47.0 => /usr/lib64/libboost_system-mt.so.1.47.0 (0x00007f4881f56000) libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f4881cfb000) libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007f4881965000) librt.so.1 => /lib64/librt.so.1 (0x00007f488175d000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4881540000) libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f4881239000) . . libcryptoおよびlibsslライブラリはopenssl 1.0.0-fips libsです。代わりに1.0.1ライブラリを試してみたいので、ホームディレクトリにビルドしました。a.out苦労せずに新しいopensslライブラリと再リンクする方法はありますか?避けたい 再リンクが必要a.out(ビルドツールは非常に複雑であるため) グローバル設定の変更(他の開発者がこのマシンで動作するため) ここで私が望んでいることをすることは可能ですか?
29 libraries  linker 

1
AT&Tのリンクエディターコマンド言語とは何ですか?
のmanページはldを参照しAT&T’s Link Editor Command Languageていますが、Googleの検索ではAT&T’s Link Editor Command Language、前述のmanページを指し示す以外に、何があったか、または何であったかについて満足のいく説明を提供していません。 ここに欠けている重要なコンピューティング履歴があるようです。この言語に関する参考資料や歴史的な文書はありますか?後世のためにウィキペディアに保存できるものはありますか?

3
静的バイナリの作成
アプリケーション[fdiskなど]をインストールしました。しかし、実行にはライブラリが必要でした。既にインストールされているバイナリから静的バイナリを作成するのに役立つユーティリティ/ツールを探しています。どこでも使えるように。 私が見つけた唯一の信頼できるツールはここErmineLightから ですが、これはシェアウェアです。 同じために利用可能なオープンソースソフトウェアはありますか? EDIT fdiskは単なる例です。私はほとんどの場合LFSで作業しているので、ユーティリティを使用する必要がある場合は、次の手順に従う必要があります。 ソースをダウンロードする 構成、設定 作る テストする インストールする、 だから時間を節約するために、DebianまたはFedoraまたは他のディストリビューションから静的バイナリを作成し、LFSで試して、それがうまく機能するか、私の要件に従っている場合、私は解決策を探していますコンパイルにはソースコードを使用します。

1
「ld」と「ld.so」の違いは?
どちらも「リンカー」と呼ばれ、バイナリーをリンクするために使用されますが、それらが互いにどのように異なるのか本当にわかりません。誰か私にそれらの違いを教えてもらえますか?
8 linker  ld 

1
非標準ディレクトリでstdc ++ライブラリを検出するようにリンカーを強制する
が他の何よりも先に検索されるという多くのガイダンスを読みましたLD_LIBRARY_PATHが、私の.soライブラリの1つはでリンクしlibtdc++.so.6てい/usr/lib64ます。 ldd mylib.so: ... libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f82abd18000) ... 次のような別の場所mylib.soにリンクしたいlibstdc++.so.6/apps/gcc_4.8.0/lib/libstdc++.so.6 その/apps/gcc_4.8.0/libためLD_LIBRARY_PATH、に追加しますが、には含まれていませんが/usr/lib64、まだ見つかりません。 追加する場合: setenv LD_PRELOAD /apps/gcc_4.8.0/lib/libstdc++.so.6 私の環境では、これ以上リンカーエラーはありません。ええ、しかしそれは問題を解決しません。下流のユーザーは、このライブラリが適切な場所にあることに依存したくないでしょう。ISN "T LD_LIBRARY_PATHが最初に検索される理由!?!
linux  gcc  linker  ld 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.