在 Windows 上,我使用 CodeSourcery 的交叉编译器套件交叉编译一个用于 ARM/Linux 的程序。我使用 MinGW MSYS 作为我的命令解释器,它经常会破坏我的路径和路径名。例如,为了构建我的程序,我调用
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
可执行文件中——我正在编译的 ARM Linux 目标不使用 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 (!)
你知道我该怎么摆脱这种烦人的行为吗?