Windowsでは、CodeSourceryのクロスコンパイラスイートを使用して、ARM/Linux用のプログラムをクロスコンパイルしています。私はコマンドインタープリターとしてMinGWMSYSを使用していますが、パスとパス名が壊れることがよくあります。たとえば、プログラムを作成するには、
arm-none-linux-gnueabi-gcc.exe -Wall -g \
-Wl,--dynamic-linker=/usr/lib/myrpath/ld-linux.so.3 \
-Wl,-rpath=/usr/lib/myrpath \
-I../targetsysroot/usr/include \
myprogram.c -o myprogram
もちろん、実行可能ファイル/usr/lib/myrpath
に逐語的に挿入したいmyprogram
のですが、コンパイル対象のARMLinuxターゲットはMinGWまたはMSYSを使用していません。しかし、これが最終的にそれに入るものです:
...
0x0000000f (RPATH) Library rpath: [C:/MinGW/msys/1.0/lib/myrpath]
...
正確には私が望んでいたものではありません。cmd.exeコマンドラインでGCCを直接呼び出すと、実行可能ファイルで正しいrpathを取得します。MSYSコマンドラインでGCCを呼び出すと、マングルされたrpathが取得されます。cmd.exeコマンドラインからmakeで実行されるMakefileを使用してGCCを呼び出すと、マングルされたrpath(!)が表示されます。
この迷惑な動作をオフにする方法はありますか?