Unter Windows kompiliere ich ein Programm für ARM / Linux mithilfe der Cross-Compiler-Suite von CodeSourcery. Ich verwende MinGW MSYS als Befehlsinterpreter, und sehr oft werden meine Pfade und Pfadnamen beschädigt. Um beispielsweise mein Programm zu erstellen, rufe ich auf
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
Natürlich möchte ich /usr/lib/myrpath
wörtlich in die myprogram
ausführbare Datei einfügen - das ARM Linux-Ziel, für das ich kompiliere, verwendet weder MinGW noch MSYS. Aber hier ist, worauf es ankommt:
...
0x0000000f (RPATH) Library rpath: [C:/MinGW/msys/1.0/lib/myrpath]
...
Nicht genau das, was ich wollte. Wenn ich GCC direkt über die Befehlszeile cmd.exe aufrufe, erhalte ich den richtigen Pfad in der ausführbaren Datei. Wenn ich GCC über die MSYS-Befehlszeile aufrufe, erhalte ich den verstümmelten Pfad. Wenn ich GCC mit einem Makefile aufrufe, das mit make über die Befehlszeile cmd.exe ausgeführt wird, erhalte ich immer noch einen verstümmelten Pfad (!)
Irgendwelche Ideen, wie ich dieses nervige Verhalten ausschalten könnte?
quelle
/
tatsächlich ein Pfad ist.Es gibt eine Möglichkeit , die
MSYS_NO_PATHCONV=1
Pfadübersetzung durch Einstellen in Windows Git MSys oderMSYS2_ARG_CONV_EXCL="*"
in MSYS2 zu unterdrücken .Alternativ können Sie die Variable nur vorübergehend nur für diesen Befehl festlegen, indem Sie die Zuweisung direkt vor dem Befehl selbst platzieren:
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
quelle
MSYS_NO_PATHCONV
Variable wird von der Upstream-Version von MSYS nicht erkannt: nicht 1.0, nicht MSYS2, keine 32- oder 64-Bit-Varianten.gpg-connect-agent "/bye"
falsch interpretiert wurde und der gpg-Agent protokollierte: "C: / Programme / Git / bye ERR 67109139 Unbekannter IPC-Befehl <GPG-Agent>"npm
. In Windows verwenden bash einfach ,npm.cmd
wenn Sie getan habenMSYS_NO_PATHCONV=1
(zB:npm.cmd -i @aspnet/signalr
)Ich glaube nicht, dass es eine Möglichkeit gibt, dies auszuschalten. MSYS ist eine Abzweigung einer alten Cygwin-Version mit einer Reihe von Verbesserungen, die auf eine verbesserte Windows-Integration abzielen, wobei die automatische POSIX-Pfadübersetzung beim Aufrufen nativer Windows-Programme wohl am wichtigsten ist. Das Problem dabei ist, dass es nicht immer möglich ist zu sagen, ob ein Argument ein Pfad oder etwas anderes ist oder ob es, wie in diesem Fall, tatsächlich ein Pfad ist, der dennoch nicht übersetzt werden sollte. Die Übersetzung wird von einer Reihe von Heuristiken geleitet .
Sie können versuchen, MinGW make anstelle von MSYS make zu verwenden (ja, es handelt sich um verschiedene Dinge). Hierbei handelt es sich um ein natives Windows-Build von make ohne POSIX-Pfadunterstützung und -Konvertierung. Installieren Sie mit
mingw-get install mingw32-make
und rufen Sie als aufmingw32-make
.Oder Sie können Cygwin ausprobieren, idealerweise mit einem Cygwin-Build der Toolchain.
quelle
Leider funktioniert das Setzen von zwei Schrägstrichen für dieses Beispiel nicht wie erwartet.
rsync -rvztn --delete --exclude="/application/logs/" ...
Ich möchte, dass 'rsync' Dateien nur in / application / logs ausschließt, die sich auf der obersten Ebene befinden, daher der führende Schrägstrich. Durch Hinzufügen von zwei Schrägstrichen wird dieses Verzeichnis nicht ausgeschlossen. Ich muss auf die weniger genauen zurückgreifen
--exclude="application/logs/"
.quelle
Tatsächlich in dem ursprünglichen MSYS Projekt zur Verfügung gestellt MinGW.org , gibt es keine Möglichkeit , das deaktivieren Posix Wegwandlung .
Aus diesem Grund habe ich eine kleine Verzweigung der msys-core- Laufzeit erstellt, die das
MSYS_NO_PATHCONV
mit der Git for Windows- Verzweigung eingeführte Flag unterstützt . Auf diese Weise können SieMSYS_NO_PATHCONV
Umgebungsvariablen wie im Git für Windows verwenden, jedoch im ursprünglichen MinGW / MSYS .Um diese Posix-Pfadübereinstimmung zu deaktivieren:
MSYS2_ARG_CONV_EXCL="*"
MSYS_NO_PATHCONV=1
MSYS_NO_PATHCONV=1
.quelle