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

时间:2015-11-19 21:01:05

标签: c++ gcc compilation compiler-optimization

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

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

我使用以下命令创建可执行文件:

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

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

2 个答案:

答案 0 :(得分:1)

-j个工作选项适用于make而不是gcc

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

问题修订后

如果您希望代码使用多个内核,则需要使用线程或进程。看看pthreads。

答案 1 :(得分:1)

由于您正在使用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

上的文档

你仍然需要编写自己的线程。