g++によるライブラリリンク
Posted: 2010年12月25日(土) 23:31
お世話になっています。
最近WindowsからLinuxへ開発環境を変えることが多くなってきたのでMakefileを導入しました。
そして、そのMakefile内でスタティックライブラリを作成することを行った後、その作成したスタティックライブラリを使用して実行可能ファイルを作ることにしました。
その実行可能ファイルを作るコマンドとして、
g++ -o [オブジェクトファイル] [スタティックライブラリファイル]
としました。
しかし、なぜかundefined reference...(スタティックライブラリファイルに入っているメソッドなど)というエラーが出てきてしまいます。
そこで、スタティックライブラリを作成するMakefileで、
ar rv [ライブラリファイル] ["複数の"オブジェクトファイル]
から
ar rv [ライブラリファイル] ["1つの"オブジェクトファイル]
に変更したところ問題なく実行ファイルが作成されました。
スタティックライブラリの作成に失敗しているのかと思いar tvで複数のオブジェクトファイルの中身を見てみると、きちんと指定したオブジェクトファイルが入っていることがわかりました。
他にもいろいろ試してみたのですが、期待した動作をしません。
コマンドの指定の仕方が間違っているのでしょうか?
よろしくお願いします。
最近WindowsからLinuxへ開発環境を変えることが多くなってきたのでMakefileを導入しました。
そして、そのMakefile内でスタティックライブラリを作成することを行った後、その作成したスタティックライブラリを使用して実行可能ファイルを作ることにしました。
その実行可能ファイルを作るコマンドとして、
g++ -o [オブジェクトファイル] [スタティックライブラリファイル]
としました。
しかし、なぜかundefined reference...(スタティックライブラリファイルに入っているメソッドなど)というエラーが出てきてしまいます。
そこで、スタティックライブラリを作成するMakefileで、
ar rv [ライブラリファイル] ["複数の"オブジェクトファイル]
から
ar rv [ライブラリファイル] ["1つの"オブジェクトファイル]
に変更したところ問題なく実行ファイルが作成されました。
スタティックライブラリの作成に失敗しているのかと思いar tvで複数のオブジェクトファイルの中身を見てみると、きちんと指定したオブジェクトファイルが入っていることがわかりました。
他にもいろいろ試してみたのですが、期待した動作をしません。
コマンドの指定の仕方が間違っているのでしょうか?
よろしくお願いします。