WindowsホストでRVDSコンパイラを使用して* .oオブジェクトコードファイル(Cソースコード)を使用して共有ライブラリ(* .so)を作成しました。共有ライブラリからシンボルをエクスポートする方法
私は(Linuxホスト上のアームの目標のためのgccを使用して)アプリケーションで、この共有オブジェクトをリンクし、実行中にセグメンテーションフォールトを生成し、実行し、取得します。(私はそれをデバッグする必要があります知っている!)
の代わりに共有ライブラリを作成して、同じソースファイルを持つ静的ライブラリを作成し、アプリケーションとリンクしてからアプリケーションを実行すると、正常に動作します。
だから私の質問は以下のとおりです。 - リンクされたときに、それが正常に動作するように
は、私はいくつかの構築物を用いて、私のソースファイルでは、明示的に、シンボル(アプリケーションにエクスポート機能)、または任意の他のシンボルをエクスポートする必要がありますかアプリケーションと一緒に?何が必要なのですか、どうすればいいですか?
ライブラリの作成時に、共有ライブラリがどのように機能しますか?つまり、関数がロードされて実行されるアドレスはライブラリに与えられますか?アプリケーション(main())は、ライブラリ関数が実行されるアドレスをどのように解決するのですか?
静的ライブラリはどのように機能しますか。静的ライブラリの場合、このアドレスの指定と解決はどのように行われますか?
ありがとう。
1)いいえ、あなたは何もする必要はありません。
@Jonathan:dlopen()呼び出しを使用して共有ライブラリをロードしていません。 – goldenmean
OK - 私はアイデアがありません。私はUnix/Linuxにもっと精通しています。私はもっと助けになるかもしれない。 –