首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由于重新定义了Win10 / pthread_setspecific / pthread_getspecific,在链接时使用mingw构建jq失败了

由于重新定义了Win10 / pthread_setspecific / pthread_getspecific,在链接时使用mingw构建jq失败了
EN

Stack Overflow用户
提问于 2022-04-28 15:18:04
回答 1查看 79关注 0票数 -1

我很抱歉,因为我已经有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.

  • autoreconf -fi

  • ./configure

  • make distclean

  • scripts/crosscompile

  • 构建了oniguruma库(v5.9.6)并将其放入--with-oniguruma=/home/build/proto/win64/usr/local

win64禁用共享启用静态启用所有静态目标=win64-x86_64-host=x86_64-w64-mingw32 32--with-oniguruma=/home/build/proto/win64/usr/local

在编译步骤的末尾,链接器失败,因为jv.c中的WIN32线程代码与正在链接的winp线程文件中的定义发生冲突。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-04-29 18:28:09

我可以在MSYS2 shell中很好地构建JQ1.6,但我根本不需要autoreconfscripts/crosscompile

下面是我所做的事情(我的系统中已经有了onigurama 6.9.8 ):

代码语言:javascript
复制
# 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 SUCCESS
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72046300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档