正如标题所示,我想知道如何将-pthread添加到Ubuntu系统上的Sublime Text 3的c / c ++编译器选项(gcc --std = gnu99 -pthread -Wall)。我在网上搜索了一个答案,无法确定任何相关的解决方案。
我还是新手,你会感激我的。谢谢。
更新:感谢您的回复。我已经实现了@ MattDMO的建议解决方案,似乎编译器已经停止了大部分的尖叫,但是,它仍然无法使用返回的以下错误消息:
gcc: fatal error: no input files
compilation terminated.
[Finished in 0.0s with exit code 4]
[cmd: ['gcc', '--std=gnu99', '-pthread', '-Wall', '/myworkingdirectory/myfile.c', '-o', 'myfile']]
[dir: /myworkingdirectory]
[path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games]"
我不确定为什么它抱怨没有输入文件。有什么想法吗?
答案 0 :(得分:0)
要添加编译器选项,您需要修改Sublime的标准C / C ++ build system,或者创建一个新的。最简单的方法是创建一个新方法,但我还将向您展示如何编辑现有文件。
要创建新的构建系统,请使用JSON语法在Sublime中打开一个新文件,并添加以下内容:
{
"cmd": ["gcc", "--std=gnu99", "-pthread", "-Wall", "${file}", "-o", "${file_base_name}"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c, source.c++",
"shell": true,
"variants":
[
{
"name": "Run",
"cmd": ["${file_path}/${file_base_name}"],
"shell": true
}
]
}
将其另存为~/.config/sublime-text-3/Packages/User/C_pthread.sublime-build
。要使用它进行编译,请打开源文件,然后选择 Tools -> Build System -> C_pthread
,然后按 Ctrl B 进行构建。 Ctrl Shift B 将执行Run
选项。
编辑Sublime的内置C / C ++构建系统稍微复杂一些。在Sublime Text 3中,包裹在.sublime-package
zip档案中。要访问C / C ++构建文件,请先安装Package Control(如果您还没有),然后安装PackageResourceViewer
插件。使用 Ctrl Shift P 打开命令选项板,键入 prv
要调出PackageResourceViewer
选项,请选择Open Resource
,然后向下导航至C++
并选择C++.sublime-build
选项。用上面的内容替换它的内容,然后保存文件。此方法的优点是您可以选择 Tools -> Build System -> Automatic
,无论何时编辑C文件,您都可以点击 Ctrl B < / kbd>构建并且不担心是否选择了正确的构建系统。
最后一点建议:编辑构建系统适用于小型一次性程序,但对于较大的项目,我强烈建议使用make
。您可以在Makefile
中设置所有选项,在Sublime中打开它,按 Ctrl B (假设您的Build System设置为Automatic
) ,你的程序将构建。这样您就不必在.sublime-build
文件中设置所有命令行选项,库包含等,然后再次为您的下一个项目更改它们。
答案 1 :(得分:-1)
这实际上就是设置编译和放大链接标志到gcc / g ++。找到一些关于在他们的论坛上为sublime的构建系统添加选项的建议,这表明你最好不要这样做。
Get SublimeText 3 to comile C++11 (sic)
真的在Ubuntu上,我会学习编译&amp;使用GNU make构建,或者只是在shell中设置LDFLAGS环境变量(例如bash export LDFLAGS=-lm
或export CCFLAGS=-Wall
)并希望sublime text 3遵守约定。如果它不理解那么,它不遵循Ubuntu POSIX编程环境惯例,随着时间的推移,它变得越来越像一个问题。
我对所提供的问题-pthread
中的命令行标志持怀疑态度,我希望该选项为-lpthread
,即“为库”。可在此链接中找到显示与POSIX线程库链接的教程:Pthread tutorial including C/C++ compile & link commands
制作教程GNU Make in detail for beginners您可以设置CFLAGS&amp; LDSOAGS,如本SO答案How to use LDFLAGS in makefile
中所述