xdotool が要件を満たすことができるかどうかをテストするための簡単なプログラムを作成しました。(そうではありません。私の最初のステップは、xdotool ライブラリを呼び出せるかどうかを確認することです。)
#include <xdo.h>
#include <iostream>
using namespace std;
int main(){
cout << xdo_version() << endl;
xdo_new(NULL);
return 0;
}
ただし、これを でコンパイルするとg++ -o a main.cpp libxdo.a -lXtst -lX11 -lXinerama -I ../test/xdotool-2.20110530.1
、次のエラー メッセージが表示されます。
/tmp/ccW95RQx.o: In function `main':
main.cpp:(.text+0x5): undefined reference to `xdo_version()'
main.cpp:(.text+0x29): undefined reference to `xdo_new(char*)'
collect2: error: ld returned 1 exit status
make: *** [sendkey] Error 1
動的ライブラリをインストールするため、apt-get install の開発パッケージは使用しませんでした。そこで、apt-get source を実行してライブラリを自分でビルドしました。次のコマンドを実行して、xdo_version と xdo_new が静的ライブラリで定義されている関数であることを確認しました。
$ nm libxdo.a | grep xdo_version
00000000000002b0 T xdo_version
$ nm libxdo.a | grep xdo_new
0000000000004070 T xdo_new
0000000000003c90 T xdo_new_with_opened_display
私が間違っていなければT
、シンボルの名前のほかに、関数が定義されていることを意味します。
結論として、上記の C++ スニペットを正常にコンパイルし、xdotool に対して静的にリンクしようとしていますが、上記のエラーが発生しました。