Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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
Makefile CMake无法将符号添加到o文件中的静态库中_Makefile_Cmake_Linker_G++ - Fatal编程技术网

Makefile CMake无法将符号添加到o文件中的静态库中

Makefile CMake无法将符号添加到o文件中的静态库中,makefile,cmake,linker,g++,Makefile,Cmake,Linker,G++,我有一个使用cmake构建系统的简单项目,该系统创建静态库,其中包括我的ringbuffer实现。从make输出中,我可以看到ringbuffer.c.o文件是用以下符号创建的: 00000000000000f8 g F .text 0000000000000066 ringbuf_put 000000000000015e g F .text 000000000000008d ringbuf_get 00000000000001eb g F .text 000000

我有一个使用cmake构建系统的简单项目,该系统创建静态库,其中包括我的ringbuffer实现。从make输出中,我可以看到
ringbuffer.c.o
文件是用以下符号创建的:

00000000000000f8 g     F .text  0000000000000066 ringbuf_put
000000000000015e g     F .text  000000000000008d ringbuf_get
00000000000001eb g     F .text  0000000000000012 ringbuf_full
00000000000001fd g     F .text  0000000000000012 ringbuf_capacity
000000000000020f g     F .text  0000000000000071 ringbuf_size
0000000000000280 g     F .text  000000000000002b ringbuf_clear
尽管它们在
libbuffer.a中未定义,还是多次定义

0000000000000000 l    df *ABS*  0000000000000000 ringbuffer.c
00000000000000f8 g     F .text  0000000000000066 ringbuf_put
000000000000015e g     F .text  000000000000008d ringbuf_get
00000000000001eb g     F .text  0000000000000012 ringbuf_full
00000000000001fd g     F .text  0000000000000012 ringbuf_capacity
000000000000020f g     F .text  0000000000000071 ringbuf_size
0000000000000280 g     F .text  000000000000002b ringbuf_clear
0000000000000000         *UND*  0000000000000000 ringbuf_put
0000000000000000         *UND*  0000000000000000 ringbuf_size
0000000000000000         *UND*  0000000000000000 ringbuf_get
0000000000000000         *UND*  0000000000000000 ringbuf_clear
用于链接库的命令:

/usr/bin/ar qc ../lib/libbuffer.a CMakeFiles/ringbuf.dir/ringbuffer.c.o 
/usr/bin/ranlib ../lib/libbuffer.a

有什么想法吗?

因为这是一个简单的CMake项目,你能将你的CMake代码添加到你的帖子中吗?@squareskittles这个项目比这要复杂得多。为了回答这个问题,我把它简化了一点,它不是make输出,而是
nm
objdump
。它还显示符号已定义。你能分享一下第二次输出是如何产生的吗?是的,对不起,我错了。这确实是一个很好的例子。第一个是
ringbuffer.c.o
上的objdump,第二个是
libbiffer.a