linker - ar on MSYS2 shell receives truncated paths when called from Makefile? -
i'm using git-bash.exe portablegit install, environment variables different mingw. have:
workgroup+user@ad-x mingw32 /z/user/downloads $ ar //workgroup.ex.com/users/user/downloads/mingw-w64/i686-4.9.3-posix-dwarf-rt_v4-rev1/mingw32/bin/ar workgroup+user@ad-x mingw32 /z/user/downloads $ gcc --version | head -1 gnu ar (gnu binutils) 2.25 now there's library i'm building, , @ end, link step fails @ call of ar command, looks this:
ar -cr "z:/user/downloads/myprojectnameabcde/somelibraryabc/libs/somelibrarydefghi/lib/mingw/libsomelibraryabcdebug.a" \ z:/user/downloads/myprojectnameabcde/somelibraryabc/libs/somelibrarydefghi/lib/mingw/obj/debug/libs/somelibrarydefghi/test/someobject.o \ [...] ... , there's bunch of objects listed in - command line 10000 characters in length, still below getconf arg_max of 32000 in msys2 shell of portablegit (git-bash.exe). however, failure no such file or directory:
\\workgroup.ex.com\users\user\downloads\mingw-w64\i686-4.9.3-posix-dwarf-rt_v4-rev1\mingw32\bin\ar.exe: z:/user/downloads/myprojectnameabcde/somelibraryabc/libs/somelibrarydefghi/lib/mingw/obj/debug/libs/some: no such file or directory ... , path given quite truncated version of path object files are. what's stranger, when copy full ar command line printed make process, , paste in same terminal, completes without error?
would have idea why happens, , make sure ar completes when called makefile?
ok, first found in makefile ar command ran, , added -v switch (so, -crv) verbose.
i find of command line read, , objects added, until comes 8192 bytes of command line, after truncated, , failure occurs. apparently known issue:
- how avoid max command line size on windows
- solving 8192 character command line limit on windows | mcu on eclipse
... although, i'm not quite clear on why should appear in make process runs in git-bash.exe, is, msys2 shell ?!
anyways, workaround/fix used use file option of make, since doing "@echo $cmd > arscript.sh" makefile again save 8kb truncated command line file; instead of original call:
@$(ar) ${flags_for_ar} "$@" $(files_for_ar) ... save line file, , call bash interpret script; is:
$(file >arscript.sh,@$(ar) ${flags_for_ar} "$@" $(files_for_ar)) bash -x arscript.sh ... , worked me.
Comments
Post a Comment