Gast
#5597172
Hallo, zu Selbstschulzwecken, habe ich versucht ein STM32 Projekt per CMake, Ninja mit GCC zu übersetzten. Mittels Libs. D.h. der Code wird erst in Libs übersetzt, z.B. in meinem Fall jeder Treiber (Core, Rcc, Tim, Spi, Gpio) in eine eigene Lib. Am Ende werden dann alle Libs zusammengelinkt. Hierbei habe ich das Problem, dass es nicht zuverlässing funktioniert. Es entstehen sporadisch 2 Fehler: a) Permission denied: z.B. arm-none-eabi-ranlib.exe: unable to rename 'lib\libgpio_lib.a'; reason: Permission denied Kompletter Aufruf: [..cut..] habe ich meine absoluten Pfade gelöscht cmd.exe /C "cd . && [..cut..]\bin\cmake.exe -E remove lib\libgpio_lib.a && [..cut..]\bin\arm-none-eabi-ar.exe qc lib\libgpio_lib.a pkg/Driver/STM32/F303CCT/20150710_V1_2_3/GPIO/Work_GPIO/CMakeFiles/gpio_ lib.dir/stm32f30x_gpio.c.obj && [..cut..]\bin\arm-none-eabi-ranlib.exe lib\libgpio_lib.a && cd ."[..cut..]\bin\arm-none-eabi-ranlib.exe: unable to rename 'lib\libgpio_lib.a'; reason: Permission denied b) Malformed archive: z.B. arm-none-eabi-ranlib.exe: lib\libbpp1_1g_rfont_lib.a: Malformed archive Kompletter Aufruf: [40/61] Linking C static library lib\libbpp1_1g_rfont_lib.a FAILED: lib/libbpp1_1g_rfont_lib.a cmd.exe /C "cd . && [..cut..]\bin\cmake.exe -E remove lib\libbpp1_1g_rfont_lib.a && [..cut..]\bin\arm-none-eabi-ar.exe qc lib\libbpp1_1g_rfont_lib.a pkg/Graphics/Font/RFont/Work_BPP1_1G/CMakeFiles/bpp1_1g_rfont_lib.dir/BP P1_1G_RFont.c.obj && [..cut..]\bin\arm-none-eabi-ranlib.exe lib\libbpp1_1g_rfont_lib.a && cd ."[..cut..]\bin\arm-none-eabi-ranlib.exe: lib\libbpp1_1g_rfont_lib.a: Malformed archive Gerade baue ich im Prinzip so lange, bis es funktioniert. Also schlechte Libs löschen und wieder Cmake starten. Die Probleme treten der häufig auf. Von daher ist es sehr nervig, bis es komplett gebaut ist. Ich habe schon im Internet danach gesucht. Das Einzige was ich gefunden habe, ist den Echtzeitvirenscanner auszuschalten. Das habe ich probiert, ich bekam aber trotzdem Fehler. Wie auch immer, das wäre auf dauer keine akzeptable Lösung. Gibt es auch einen anderen Weg, z.B. das Erzeugen temporärer Dateien, die dann umbenannt werden zu vermeiden ? Ich habe es auf verschieden - PCs mit WIN10 und Win7 - mit/ohne Virenscanner - verschiede Gcc versionen probiert. cmake/3.11.1-1 ninja/1.8.2-1 -- The C compiler identification is GNU 7.3.1 -- The CXX compiler identification is GNU 7.3.1