gpt4 book ai didi

gcc - 如何阻止 MinGW 和 MSYS 修改命令行中给出的路径名

转载 作者:行者123 更新时间:2023-12-02 04:29:05 26 4
gpt4 key购买 nike

在 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 或系统管理系统。但最终的结果是这样的:

...
0x0000000f (RPATH) Library rpath: [C:/MinGW/msys/1.0/lib/myrpath]
...

不完全是我想要的。如果我直接在 cmd.exe 命令行上调用 GCC,我会在可执行文件中获得正确的 rpath。如果我在 MSYS 命令行上调用 GCC,我会得到损坏的 rpath。如果我使用从 cmd.exe 命令行使用 make 运行的 Makefile 调用 GCC,我仍然会得到一个损坏的 rpath (!)

有什么想法可以关闭这种烦人的行为吗?

最佳答案

is a way通过在 Windows Git MSys 中设置 MSYS_NO_PATHCONV=1 或在 MSYS2 中设置 MSYS2_ARG_CONV_EXCL="*" 来抑制路径转换.

或者,您可以通过将赋值放在命令本身之前来临时仅为该命令设置变量:

MSYS_NO_PATHCONV=1 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

关于gcc - 如何阻止 MinGW 和 MSYS 修改命令行中给出的路径名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7250130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com