include类并使用g++进行编译

include class and compile with g++

本文关键字:编译 g++ include      更新时间:2023-10-16

我是C++和unix的初学者。这是我的问题。

我在主函数中写了几行,我需要一个在c_lib-库中定义的函数。

main.cpp:

#include <iostream>
#include "c_lib.cpp"
int main() 
{
    return 0;
}

我想在终端上执行它,所以我写了

g++ -c c_lib.cpp
g++ -c main.cpp
g++ -o run c_lib.o main.o

在此之前,没有错误报告。

然后

./run

我得到错误

错误:/run:没有这样的文件或目录

怎么了?

通常不会包含.cpp,通常只包含标头。标头通常包含定义其他.cpp
中代码接口的声明你能告诉我们c_lib的来源吗?这可能会有所帮助。

由于c_lib的来源是#included,因此不需要单独编译。事实上,这可能会导致错误(首先想到的是多个定义)。你只需要做:

g++ -o run main.cpp

在这种情况下编译您的代码
(使用头(.h)时,需要单独编译实现(.cpp

编译时打开警告:

g++ -Wall -Wextra -o run main.cpp

如果您的代码出现问题,您将获得更多的输出。

run文件是否由gcc输出?您可以通过在终端中调用ls进行测试(或者ls run只显示可执行文件(如果存在))。

如果可执行文件存在,可能是它没有被标记为可运行。如果这是一个问题,我会深入探讨,因为它不在网站的一般范围内(尽管仍然相关)

首先,您不应该将源文件包含到另一个源中。您应该创建一个头文件并在其中放置声明(允许main()从c_lib.cpp调用函数或使用全局变量(如果有的话))

当您运行g++时,无论操作是否成功,您都必须查看它的输出。在您的案例中,它失败了,因此没有创建可执行的run

通常您不手动调用编译器,而是编写一个makefile并让make实用程序来调用g++