我已经在Linux中创建了一个名为helloworld的文件夹。在此文件夹内有子目录:
include /在此目录中,我创建了一个名为helloworld.h的头文件。内容是:
class helloworld{
public:
void getvalue();
};
lib /在lib目录中,我创建了一个名为helloworld.cpp的cpp文件。内容主要是功能:
#include<iostream>
#include<helloworld.h>
using namespace std;
void helloworld::getvalue() {
}
src /在src目录中,我创建了一个名为main.cpp的主cpp文件。内容主要:
#include<iostream>
#include<helloworld.h>
int main()
{
helloworld a;
a.getvalue();
}
但是在我执行autoconf,automake,。/ configure以及它有一个错误:
helloworld/src/main.cpp:8: undefined reference to `helloworld::getvalue()'
我只想在main.cpp中使用helloworld.cpp的函数。我花了很多时间进行搜索并尝试并出错。请帮忙。
添加了Makefiles.am
在父目录中,我有两个文件Makefile.am和configure.ac:
Makefile.am
AUTOMAKE_OPTIONS = foreign
SUBDIRS=src lib
configure.ac
AC_INIT([helloworld], [0.1], [[email protected]])
AM_INIT_AUTOMAKE
AC_PROG_RANLIB
AC_LANG(C++)
AC_PROG_CC
AC_PROG_CXX
AC_CONFIG_MACRO_DIR([m4])
AC_PROG_LIBTOOL
AC_DISABLE_STATIC
AC_CONFIG_FILES([Makefile lib/Makefile src/Makefile])
AC_SUBST([CC])
LT_INIT
AC_OUTPUT
在lib目录中有一个Makefile.am
INCDIR=../include
INCPATH=-I. -I$(INCDIR)
AM_CPPFLAGS=$(INCPATH)
lib_LTLIBRARIES=libhelloworld.la
libhelloworld_la_SOURCES=helloworld.cpp
在src目录中有一个Makefile.am
INCDIR=../include
INCPATH=-I. -I$(INCDIR)
AM_CPPFLAGS=$(INCPATH)
helloworld_LDADD=-L/lib/libhelloworld.la
bin_PROGRAMS=helloworld
helloworld_SOURCES=main.cpp
如果我删除了a.getvalue();
helloworld_LDADD=-L/lib/libhelloworld.la
/lib/libhelloworld.la
此搜索库来自根目录,而不是您的项目lib /目录
尝试
./lib/libhelloworld.la
或
../lib/libhelloworld.la
或
lib/libhelloworld.la