2017-01-26 39 views
0

Debian OSがインストールされているNXP(Freescale)imx6の "C"アプリケーションを作成しようとしています。私のホストマシンはUbuntu 16.04です。私はIDEとしてEclipseを使用しており、今日までコンパイルすることができます。コンパイラにはarm-linux-gnueabihf-gcc、リンカにはarm-linux-gnueabihf-ldを使用します。リンカーパラメーターに-lasoundオプションを追加しましたが、アプリケーションをビルドできません。私は私のUbuntu(ホスト)マシン上でlibasound.soファイルを持っていないと私のリンカが「couldn考える-lasoundARMのためのALSAライブラリとクロスコンパイル

を見つけることができません:私は腕のlinux-gnueabihf-LD

エラーが出ます私のアプリケーションにライブラリへのリンク。

libasound.soファイルを自分のARMマシンからホストマシンの/home/user/Downloadsフォルダにコピーしましたが、まだコンパイルできませんでした。

ビルド前にクロスコンパイルプロジェクトでALSAライブラリを使用する手順はありますか?ここで

は、あなたが( -static経由)静的リンクを頼むが、そう ld、おそらく(あなたが -Wl,--verboseで実行できることを確認する)を無視共有ライブラリを提供し、ビルド操作の出力

Building target: tihc_linux_application 
Invoking: GCC C Linker 
/usr/bin/arm-linux-gnueabihf-ld -static -L/home/user/Downloads -pthread -lasound -o "main" ./src/main.o 
/usr/bin/arm-linux-gnueabihf-ld: mode armelf_linux_eabi 
/usr/bin/arm-linux-gnueabihf-ld: cannot find -lasound 

答えて

0

です。 1つの選択肢は、libalsaをゼロからクロスコンパイルし、結果として得られる静的ライブラリを使用してアプリケーションをリンクすることです。別のオプションは、あらかじめコンパイルされたgnueabihf libalsaをどこかで検索することです。

+0

私は静的フラグを削除し、詳細フラグを追加しました。これらの変更の後、前述のように、リンカーは共有オブジェクトファイルを見つけましたが、今回は別のエラーが発生しました。 '' /usr/arm-linux-gnueabihf/lib/libc.so.6:シンボルを追加する際にエラーが発生しました:コマンドラインからDSOが見つかりませんでした。 ' –

+0

@BlackGlix [strange-linking-error-dso-from-command- line](http://stackoverflow.com/questions/19901934/strange-linking-error-dso-missing-from-commandline)を参照してください。 TLDR - オブジェクトファイルをコマンドラインの先頭に移動し、最後にlibsを移動します。 – yugr

関連する問題