未定义的引用而静态链接的C库(Undefined reference while linking s

2019-10-22 01:42发布

在我的最新项目,我就遇到一个未定义的参考共享库的方法,一个奇怪的问题。 我搜索的SO,但所有我能找到的要么是C ++相关的(外部的“C”),或没有真正帮助。

在考虑中的库是我的libosm的叉 ,它使用的protobuf以产生去为OpenStreetMap的数据/串行化代码在其二进制格式(.osm.pbf)。 有问题的功能是osmpbf__blob__unpack但是这仅仅是第一我最终使用,所以我怀疑它的一个普遍问题。

余检查所得libosm.anm ,并且该方法是存在的,出口但由于某些原因而连接它是找不到的。 下面是我目前的标志。 我试图改变秩序,甚至包括所有图书馆两次(在另一个线程建议),但我总是与未定义的引用而告终。

CFLAGS      = -v -std=c99 -O3 -Wall -Wextra -pedantic
LIBFLAGS    = -losmpbf -lprotobuf-c -lz -lpthread

目前,我完全迷失了什么错误可能是,但我认为这可能是一个小常规错误。 它一直是因为我用c一会儿..任何帮助,将不胜感激。

干杯,弗洛里安

编辑:这是我的完整的Makefile。 我只是做了该名称为变量LIBFLAGS ,因为我用我自己的小规则,但它看起来像我应该使用LDLIBS和内置的规则这个简单的例子。

CC          = gcc
CFLAGS      = -v -std=c99 -O3 -Wall -Wextra -pedantic
LIBFLAGS    = -losmpbf -lprotobuf-c -lz -lpthread

all: main.x

main.x: main.c
    $(CC) $(CFLAGS) $(LIBFLAGS) main.c -o main.x

clean:
    rm -rf *.o main.x

Answer 1:

问题是所述接头(GCC),最喜欢的连接体,处理从左至右的参数。 这样的链接看到库,但要处理未解决的引用,所以什么也没发生。

解决方法是在去年上线,而不仅仅是CFLAGS后的库。



文章来源: Undefined reference while linking static C library