2009-09-01 12 views
2

私は、オペレーティングシステムなしで、powerpc組み込みシステムで簡単なプログラムを実行しようとしています。私はシミュレータとしてGNUコンパイラリンカツールとPSIMを使用しています。私は非常に単純なリンカ指令ファイルを作成しました。動的再配置(rela.dyn)を防ぐにはどうすればよいですか?

私は静的ライブラリでグローバル変数を使用しており、サンプルプログラムでその変数を使用したいとします。しかし、サンプルプログラムGNU ldをリンクすると、エラーが発生し停止します。リンカー指令ファイルにrela.dynが見つかりません。実際には、私は動的ローダを持っていないので、動的に再配置可能なライブラリを使用したくありません。私は間違って何をしていますか?

+1

リンク時に-nostartfiles -nodefaultlibs -nostdlib -staticフラグを使用しました。 -ffreestandingは私のアプリケーションのために適切でない共有フラッグを必要とします –

答えて

0

これ以上の情報は言い難いです。基礎となるOSがない場合は、プラットフォームランタイムでのリンクを避けるために-ffreestandingを使用しましたか?

編集: -ffreandanding -sharedが必要ですか? -ffreestandingは、ホストされていない環境にコンパイルすることを意味します。どのようにそのような環境は共有ライブラリをサポートできますか?

+0

実際には、私は試してみた結果を見ました... –

+0

おかしい。私はこの時点で中断します(-freestandingはそれをしてはいけませんが、私は本当に判断できないので、私はあなたの特定のプラットフォームで作業していません)。おそらくJames Molloyのアドバイス(ld -v)に従うことでさらにあなたが得られます。 – DevSolar

+0

答えに何が役に立たないと思われるかについてのコメントを残すことなく、投票を無効にするルールがあるべきです。 : - / – DevSolar

0

-ffreandanding、Solarと同じです。それが失敗した場合は、ldを--verboseオプションで実行して、リンクしようとしているものを正確に確認します。これにより、さらにデバッグすることができます。

関連する問題