У меня есть простой проект, использующий систему сборки cmake, которая создает статическую библиотеку, которая включает мою реализацию кольцевого буфера. Из вывода 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
Есть идеи?