2009-04-13 4 views
0

を印刷し得ていない私は、実物ビューDeveloper Suiteのツールを使用してWindows上で作成した共有オブジェクトは、Windows上でコマンドをリンクされているホストベースprintfを

のarmlink -o mylib.so <「私の* .oここに指定されたファイル ">

次に、gccツールを使用してlinux上でこのmylib.so共有ライブラリとアプリケーションをリンクします。

私はこのmylib.soで関数内のprintf文を持っていますが、私は最終的な実行可能ファイルを実行すると、私は、コンソール上の任意のprintfの出力を得ることはありません。(printfをが呼び出されるところはどこでもstdio.hのがinlcudedされる)ので

printfやシステム関数/システムコール/ランタイムライブラリ関数が正しく動作しなくなる共有ライブラリに関する既知の問題はありますか?

これは、Windowsベースのコンパイラツールチェーンで共有ライブラリを作成し、この共有ライブラリをlinux-gccコンパイラツールのアプリケーションとリンクするという私の独自の設定と関係がありますか?

ありがとうございます。あなたのターゲット以来

〜AD

答えて

0

はアームであり、私はWindows上でいくつかのファイルをコンパイルする問題で、その後、Linux上でリンクするべきではありません、これはCであると仮定します。あなたはこれを確認しましたか?私はhello.cでからリンクされているWindows上でhello.so、作ることをお勧め:

#include <stdio.h> 
void hello(void) {printf("Hello\n");} 

をして、Linux上でのmain.cからメインリンク:最小コンパイラチェーンのテストとして

void hello(void); 
int main(int argc, char *argv[]){ hello(); return 0; } 


、あなたの最終的な実行可能ファイル(共有ライブラリから、すなわちないコード)で定義された内のコードからprintf関数を呼び出す場合は、そこから任意の出力を得るのですか?


strings --print-file-name -a mylib.so final_executable | grep "string from printf in shared library" 

リターン2 occurensesしていますか?


readelf -a mylib.so 
readelf -a final_executable 

にprintfのためのすべての参照はありますか?

+0

@hlovdal:メイン/アプリケーションにあるprintfsは正しく印刷されますが、共有ライブラリ内のものだけが何も出力していません。また、ライブラリの作成、および実行可能ファイルへのリンクが正しく起こっていると思います。 'readelf'、 'strings --printf ..'の出力を確認します。 -AD – goldenmean