Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用gcc,如何将库(-lpthread)包含到自己的静态用户库中?_C_Gcc_Static Libraries - Fatal编程技术网

使用gcc,如何将库(-lpthread)包含到自己的静态用户库中?

使用gcc,如何将库(-lpthread)包含到自己的静态用户库中?,c,gcc,static-libraries,C,Gcc,Static Libraries,我想在静态用户库中使用pthread,但是依赖项目不会链接,除非我将'-lpthread'添加到使用它的每个项目中 我宁愿在自己的用户库中指定'-lpthread'。事实上,我已经做到了,但它什么也没做;我仍然需要将'-lpthread'添加到依赖项目中,否则我会 Invoking: GCC C++ Linker g++ <....> /usr/bin/ld: /home/xxx/git/xxx/xxx.CUtil/Debug/libxxx.CUtil.a(EzyThread.o):

我想在静态用户库中使用pthread,但是依赖项目不会链接,除非我将'-lpthread'添加到使用它的每个项目中

我宁愿在自己的用户库中指定'-lpthread'。事实上,我已经做到了,但它什么也没做;我仍然需要将'-lpthread'添加到依赖项目中,否则我会

Invoking: GCC C++ Linker
g++ <....>
/usr/bin/ld: /home/xxx/git/xxx/xxx.CUtil/Debug/libxxx.CUtil.a(EzyThread.o): undefined reference to symbol 'pthread_create@@GLIBC_2.2.5'
在微软VC中,它做我想做的事情——但我现在在一个gcc环境中。我查了一下,哪一个看起来情绪很高,而有用信息却很低。gcc中是否有类似的内容,或者有其他方法来避免在每个依赖项目中指定“-lpthread”?我知道C不是OOP,但为什么要让每个依赖项都计算出用户库是如何实现的呢


(请不要说像#pragma方法这样的方法比'-lpthread'长。请注意,#pragma或我的用户库中的等效机制只键入一次,但'-lpthread'可能需要数百次,如果用户库中的底层机制发生更改,则需要更改相同的次数。)

静态库实际上是对象文件哑归档之上的一个小沙司。特别是,它们不跟踪对其他库的依赖关系

gcc中是否有类似的内容,或者有其他方法来避免在每个依赖项目中指定“-lpthread”? ... “-lpthread”可能需要数百次,如果用户库中的底层机制发生更改,则需要更改相同的次数

在Unix世界中,这通常是在构建系统级别完成的(例如,如果处理Autoconf,则通过适当地设置
LIBS
环境变量)

请注意,#pragma或我的用户库中的等效机制只键入一次


不过,pragma的语义并没有很好地指定。首先,如果在不同的源文件中有两个pragma,那么应该首先链接哪个库?

AFAIK您不能。这种事情通常委托给生成系统。提取
.o
并将它们添加到库中会有帮助吗?请参见
ar t/usr/lib/x86_64-linux-gnu/libpthread.a
#pragma comment(lib, "SomeOtherStuff.lib")