C++ - Ubuntu 16.04 中个人类(class)的文件夹

标签 c++ class ubuntu-16.04

可能是个愚蠢的问题,我用 C++ 编程已经有一段时间了,但相比之下,我是 Linux 的新手。

我用 C++ 创建了一个简单的 Matrix 类,并且一直在我工作所需的大多数程序中使用它。 到目前为止,我一直在将 Matrix.h 和 Matrix.cc 文件复制到我在包含我编写的程序的不同文件夹内创建的/include 子文件夹中,编译它们并将所有内容与 makefile 链接在一起。我猜不是真的那么聪明。

现在,我想到要改善这种情况的第一件事就是将 Matrix.h 和 Matrix.cc 的单个拷贝放在一个文件夹中,并在我的程序的 make 文件中添加它们的新路径。 在这种情况下,是否有任何“首选”文件夹,存放文件应该更方便?我似乎明白大多数头文件都在/usr/include 中,而类文件在/usr/lib 中。

具体来说,我在想,当我使用我创建的这个类时,我必须在 main_program.cpp 中包含头文件并在编译时链接文件 Matrix.o。 另一方面,当我使用“普通”类(例如 cmath、vector、iostream)时,我只需要在主文件中包含 header ,编译器会负责链接。 这可以通过简单地将我的类文件放在正确的系统文件夹中来实现吗?我应该修改编译器选项中的任何内容吗?

谢谢!

最佳答案

您不必手动链接标准头文件的原因是编译器默认链接 libc.a。其他库默认不链接,需要编译标志。例如,cmath 需要 -lm 标志,因为它不是 libc 的一部分。

因此,简短的回答是您无法真正避免告诉编译器链接什么。

关于C++ - Ubuntu 16.04 中个人类(class)的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46325950/

相关文章:

python - Snapcraft python只打包依赖项,不打包app?

c++ - 如何实例化从抽象类派生的类

c++ - 使用自定义分配器使 std::list 缓存友好?

c++ - 将 `this` 传递给子对象

c++ - 在模板类中通过引用传递

javascript - 如何获取具有多个类的元素

linux - Caddy (Linux) CloudFlare 凭证丢失

linux - 如何在 Ubuntu 上的 iptables 中删除/解锁我的服务器 IP?

c++ - boost::asio 检查器

javascript - 使用 jquery 或 javascript 更改 html 中类属性的值