我的makefile有问题。运行它会导致错误:
make
g++ -c -o vcd_converter.o vcd_converter.cpp
In file included from vcd_converter.cpp:2:
vcd_converter.h:16:10: fatal error: defs.h: No such file or directory
16 | #include "defs.h"
| ^~~~~~~~
compilation terminated.
make: *** [<builtin>:
我在linux中做了一个示例项目,但是在运行主Makefile时遇到了错误
项目信息:
项目/数据库文件夹具有文件数据库(h、database.cpp、bulid、Makefile )
数据库h
/*data base file*/
#include<iostream>
using namespace std;
class mydatabase
{
public:
mydatabase(int a , int b);
int sum(){return m_a +m_b;}
int diff(){return m_a -m_b;}
int mul(){
我已经成功地使用动态库开发了一段代码。现在我需要搬到静态库。因此,我按照作者的指定使用make构建了这个库,但是当我试图构建我的程序时,我遇到了以下消息:
/usr/bin/ld: /usr/local/lib/libfft3dmpi.a(remap3d_wrap.o): in function `remap3d_create':
/home/mirco/Scrivania/fftmpi-1Oct18/src/remap3d_wrap.cpp:36: undefined reference to `operator new(unsigned long)'
/usr/bin/ld
最终更新:
问题的解决多亏了“无用”!
$(EXET): $(OBJS)改为$(EXET): $(OSRC)。
更新:2020年9月29日
按照@Mad科学家的建议,我编辑并删除了Makefile中不必要的部分。但是,行OSRC := $(addprefix $(ODIR)/, $(OBJS))似乎没有任何效果,因为*.o对象文件现在被编译到工作区文件夹中,而不是专用的./obj文件夹,这是我的问题所在。
#############################################################
## THIS IS A TEST PROJECT
我的项目包含一个sub.h文件,它指示我只包含以下内容:
int sub(int n, int *A, int *B, int *C);
H对从input.txt文件中提取的3个数组执行未指定的操作。
说明说,子.o将在稍后提交项目时提供。我的问题是,如何为一个我还无法访问的给定.o文件创建一个makefile?我很难判断我的makefile是否会成功,因为我没有sub.o。
该项目只包含main.cpp、sub.h和makefile。
到目前为止,我对makefile的了解如下:
project: main.o sub.o
g++ main.o message.o -o projec