include类并使用g++进行编译
include class and compile with g++
我是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的来源是#include
d,因此不需要单独编译。事实上,这可能会导致错误(首先想到的是多个定义)。你只需要做:
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++
。