我很抱歉,因为我已经有20多年没有以专业的身份处理C了,所以这里可能有一个明显的解决办法。
在mingw64中构建时,我可以达到链接器正在为jq.exe运行的程度,但是特定于p线程的代码会给我带来错误:
CCLD jq.exe
(这只是以下三个类似错误之一:)
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.3.0/../../../../lib\libpthread.a(libwinpthread_la-thread.o):(.text+0x12e0):多重定义的‘p线程_key_create’;./.libs/libjq.a(jv.o):C:\msys64\home\build\ws\jq\build\win64\tmp/../../../src/jv.c:338:首先定义在这里,
我已经使用pacman安装了我认为是必要的库/工具,但是是否有什么东西可以阻止配置/生成进程包含线程库,因为它看起来像是预处理器试图避免包含?这就是解决这个问题的正确方法吗?
我的构建步骤:
jq/modules/oniguruma.
win64禁用共享启用静态启用所有静态目标=win64-x86_64-host=x86_64-w64-mingw32 32--with-oniguruma=/home/build/proto/win64/usr/local
在编译步骤的末尾,链接器失败,因为jv.c中的WIN32线程代码与正在链接的winp线程文件中的定义发生冲突。
谢谢!
发布于 2022-04-29 18:28:09
我可以在MSYS2 shell中很好地构建JQ1.6,但我根本不需要autoreconf或scripts/crosscompile。
下面是我所做的事情(我的系统中已经有了onigurama 6.9.8 ):
# change the next line to point to the proper destination
INSTALLPREFIX=C:/TEMP/jq
./configure --prefix=$INSTALLPREFIX &&
# fix building DLLs
sed -i.bak -e "s/\(allow_undefined=\)yes/\1no/" libtool &&
make install-strip &&
echo SUCCESShttps://stackoverflow.com/questions/72046300
复制相似问题