加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

c – Linux makefile中的未定义引用

发布时间:2020-12-13 19:22:19 所属栏目:Linux 来源:网络整理
导读:我想在linux下构建我的应用程序,但我无法使用我的makefile来实现它. 问题是我要链接的静态库.我得到了很多“未定义的引用”错误消息,如: undefined reference to `std::basic_string 要么 undefined reference to `cgicc::Cgicc::Cgicc(cgicc::CgiInput*)'

我想在linux下构建我的应用程序,但我无法使用我的makefile来实现它.
问题是我要链接的静态库.我得到了很多“未定义的引用”错误消息,如:

undefined reference to `std::basic_string

要么

undefined reference to `cgicc::Cgicc::Cgicc(cgicc::CgiInput*)'

这是我的makefile:

CXX = gcc

INCL_CGICC = ../cgicc-3.2.9
INCL_OPENSSL = ../openssl-1.0.0e/include
INCL_LOG4CPLUS = ../log4cplus-1.0.4/include
INCL_BOOST = ../boost_1_46_1
INCLUDES = -I$(INCL_CGICC) -I$(INCL_OPENSSL) -I$(INCL_LOG4CPLUS) -I$(INCL_BOOST)

CXXFLAGS = -Wall -D_LINUX -DVERSNUM=2 -DVERSMAJOR=0 -DVERSMINOR=0 $(INCLUDES)

TARGET = myapp
OBJS = Main.o 

all: $(TARGET)
strip -s $<
mv -f $< release 

$(TARGET): $(OBJS)
$(CXX) -static -o $@ $(OBJS) 
            ../cgicc-3.2.9/cgicc/.libs/libcgicc.a 
            ../openssl-1.0.0e/libssl.a 
            ../openssl-1.0.0e/libcrypto.a 
            ../log4cplus-1.0.4/src/.libs/liblog4cplus.a 
            -ldl -lpthread

%.o: %.cpp
$(CXX) $(CXXFLAGS) -c $<

问题是我不知道makefile.我只是复制了一个现有的并尝试调整它.似乎没有用,我找不到包含静态库的示例makefile.

最佳答案
CXX = gcc

您使用gcc而不是g进行链接,因此默认情况下不会链接-lstdc.
请注意,使用gcc编译C源工作正常,因为在这种情况下会隐式调用g.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读