gcc 会自动使用-j4 吗?我可以做些什么来优化我的编译吗?

Does gcc automatically use -j4? Is there anything I can do to optimize my compilation?

您好,我是 Linux 平台的初学者,因此我不熟悉终端命令。

我正在用 C++ 编写应用程序,我预计它会消耗大量处理能力。所以我想确保我使用了我设备上的所有可用内核(它有 4 个内核)。

我正在使用以下内容创建可执行文件:

gcc -o blink -l rt blink.c -l bcm2835

其中 bcm2835 是我用于 I/O 的库。所以我的问题是,这个命令是在使用所有可用的内核,还是我可以做些什么来优化它?如果能让这段代码 运行 更快,我愿意使用一切可用的东西,扔掉厨房的水槽。

-j 职位选项适用于 make 而不是 gcc

make一起使用时,会导致多个"recipes"并行执行。在这种情况下,您的 gcc 行是一个食谱。

问题修改后

如果您希望您的代码使用多核,您将需要使用线程或进程。查看 pthreads。

由于您使用的是 C++,因此您已经为您集成了这个足够好的跨平台线程库 (>=C++11)。

只需确保添加 -std=c++11 以便

gcc -o blink -l rt blink.c -l bcm2835 

变成

gcc -std=c++11 -o blink -l rt blink.c -l bcm2835

文档和基本示例位于 http://www.cplusplus.com/reference/thread/thread/
http://en.cppreference.com/w/cpp/thread/thread

上的文档看起来更漂亮

尽管如此,您仍然需要自己编写要穿线的内容。