我安装了Eclipse Neon(v4.6)。另外,我有“在Windows上使用Ubuntu进行Bash”(2016年9月)。我安装了gcc和gdb用于在C中进行编译和调试。我在终端上测试了它们并且它们正在运行。
我正在尝试使用Eclipse创建一个新的C项目,但是在编译器选择阶段,它并没有让我选择使用“Windows上的Bash on Ubuntu”编译器。
有什么方法可以解决我的问题吗?
答案 0 :(得分:5)
因为Bash / WSL很新,并且从外部Bash(使用bash.exe -c ...
)正确调用Linux命令的能力尚未被许多开发人员工具理解(但是),您可能需要做一些工作来定义用于调用要调用的必需bash.exe -c "gcc ..."
命令的自定义任务/操作。
但是,您绝对应该能够write/configure一个makefile(或者甚至更好的CMake文件),它可以将路径切换到lib / include / tools / etc.基于环境,然后在Windows或Linux上顺利构建。
这个场景引发了一个很酷的博客文章的想法,我将在下一周或两周内处理并发布到our blog https://blogs.msdn.microsoft.com/commandline:)
HTH。
答案 1 :(得分:4)
我认为在C / C ++中使用wsl进行编程的最佳方法就像微软那样。 Visual Studio使用ssh连接到Linux环境以获得“C ++ for Linux Development”。 因此,在我们的例子中,我们可以在wsl上设置openssh服务器,从IDE连接到localhost并启动远程项目。
2017年5月
答案 2 :(得分:2)
我们使用Eclipse和makefile项目。我通过添加“外部构建器”来配置Eclipse - 并使用以下脚本:
-c "cd `echo '${project_loc}' | sed -e 's/C:/\/mnt\/c/g' -e 's/\\\\/\//g'` && make -f path_to_makefile/makefile
“cd
”和sed
技巧是从Eclipse“C:\”转换为Linux子系统for Linux“/mnt/c/
”并将“\
”替换为“/
”
现在按${project_loc}
我还没弄明白如何在Linux上执行gdb。但至少编译+链接(并执行我的makefile中定义的单元测试)现在正在利用原生Ubuntu工具链的全速...
答案 3 :(得分:2)
我有更好的方法... 您可以添加新的用户终端,并在Eclipse中的“本地终端设置”下的Eclipse中提供“ Ubuntu.exe”的位置,如屏幕截图所示。
在我的情况下,目录是...
- C:\ Users \ MyuserName \ AppData \ Local \ Microsoft \ WindowsApps \ CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc
如果eclipse无法选择ubuntu16.4.exe,则在路径中手动写入。 如图所示。
现在,只需点击应用并关闭。打开终端(Ctrl + Alt + Shift + T),然后选择Ubuntu终端。
现在,通过终端导航到源目录并编译您的项目。享受...
答案 4 :(得分:1)
最初,我遵循espenalb的建议,但是它没有正确解析我的构建输出:双击行没有打开文件,也没有出现错误进入行。
我最终改变了内置CDT构建器(而不是添加外部构建器)。我将构建命令更改为以下命令(alex是我的用户名):
bash.exe -c make 2>&1 | sed -e 's/\\/home\\/alex/C:\\\\Users\\\\alex/g' -e 's/\\//\\\\/g'
通过这种方式,make输出将从具有“ / home / alex”的路径转换为“ c:\ users \ alex”下的相同路径。这样可以解决解析问题。
我也遇到了eclipse用“构建未正确配置”替换生成输出的问题-我通过在项目属性(它是C Makefile项目)的“构建器”子菜单中禁用“扫描仪配置生成器”来解决了该问题。另外,需要从默认的构建命令中删除目标“全部”和“干净”。