【发布时间】:2017-07-11 08:44:29
【问题描述】:
我正在对 Github 上的一个现有项目进行分叉,我想对其进行一些更改。我想做的一件事是添加一个额外的文件。此文件应位于 Makefile.am 生成的库之一中。问题是我要添加的文件是.c文件,而项目中的其他所有文件都是.cpp。
应该包含该文件的库在makefile中使用如下:
MYLIBRARY=path/mylibrary.a
...
path_mylibrary_a_CPPFLAGS = $(AM_CPPFLAGS)
path_mylibrary_a_CXXFLAGS = $(AM_CXXFLAGS)
path_mylibrary_a_SOURCES = \
path/cppfile1.cpp \
path/cppfile1.h \
path/cppfile2.cpp \
path/cppfile2.h \
path/cppfile3.cpp \
path/cppfile3.h
...
mybinary_LDADD = $(MYLIBRARY)
只需将path/cfile.c 和path/cfile.h 添加到源列表中就会出现以下错误:
CXXLD mybinary
/usr/bin/ld: path/mylibrary.a(path_mylibrary_a-cfile.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
path/mylibrary.a: error adding symbols: Bad value
我该怎么做才能使 Makefile.am 将 c 文件编译到一个项目中,否则该项目是用 c++ 构建的?
【问题讨论】:
-
也许您应该添加一个
path_mylibrary_a_CFLAGS变量?当然适当地初始化了。
标签: makefile autotools automake