其实个人觉得eclipse还是很不错的。之前在windows下就装了一个eclipse。
现在的话,习惯在ubuntu下写C和C++程序,包括GTK+。之前都是用gedit + gcc,偶尔用vi吧。其实之所以想去捣鼓eclipse还是因为想要有代码补全和代码提示功能。vim的话配置一下也可以实现。有兴趣的童鞋可以参考以下链接,去配置一下vim,以实现代码补全。
http://www.cnblogs.com/ggjucheng/archive/2012/08/19/2646455.html
但是,不得不承认本人vi或者vim的使用水平只是半桶水。我也不是那种非要用vi/vim的人,所以抱歉,我还是去找个IDE。
eclipse的安装、CDT的配置和GTK+工程的配置,之前我也去网上查找个相关的教程,但是比较零碎,有所缺漏,可能是因为版本更新了吧。我自己参照着捣鼓了一下,现在把整个流程说下:
eclipse的安装和CDT的配置:
1、到eclipse官网下载eclipse for linux标准版、还有从www.eclipse.org/cdt/下载CDT。到JDK官网下载jdk,注意版本匹配的问题。
2、将三个压缩包放至主目录,解压CDT和JDK,理论上解压到哪里都行,但是建议把JDK解压到主目录,得到jdk1.7.0_45/文件夹。因为运行eclipse的时候是需要jdk1.7.0_45/文件夹里的JRE文件夹的,如果你放在其他目录,需要root权限才能获取到,eclipse工程运行的时候会出错。当然也可以将之置于其他文件夹,然后用chmod命令更改权限,理论上可行,无实测。我是将CDT和JDK的压缩包都解压到主目录,得到CDT/和jdk1.7.0_45/两个文件夹
3、解压eclipse压缩包至/opt(理论上解压到哪里都可以),得到/opt/eclipse/文件夹
4、将~/CDT/plugins/下的所有东西都复制到/opt/eclipse/plugins/里面,将~/CDT/features/下的所有东西都复制到/opt/eclipse/features/。命令如下:
sudo cp -r ~/CDT/plugins/ /opt/eclipse/
sudo cp -r ~/CDT/features/ /opt/eclipse/
注意:上述两条命令最后的路径后面不带plugins/或features/。如果你带了,ubuntu会把~/CDT/plugins/文件夹整个复制到/opt/eclipse/plugins/下,也就是说/opt/eclipse/plugins/下还有一个文件夹叫plugins,这显然不是我们想要的。不要自己复制错了然后又回来骂我。
5、接下来把~/jdk1.7.0_45/文件夹下的jre/复制到eclipse的安装目录下。其实更简单的方法是在eclipse/文件夹下建立一个软链接指向~/jdk1.7.0_45/jre/,命令如下:
sudo ln -s ~/jdk1.7.0_45/jre/ /opt/eclipse/jre
6、好了,到此为止,eclipse安装和CDT的配置完毕,可以进行java编程 或者C/C++的编程了,测试程序就略过了,Javaer(这个表达是可行的)和Cer(话说这个表达对吗)可自行测试。
在终端输入/opt/eclipse/eclipse即可启动。为了方便,可以在~/.bashrc文件中创建一个环境变量,如下:
gedit ~/.bashrc
在文件末尾输入
eclipse="/opt/eclipse/eclipse"
保存关闭,终端里输入:source ~/.bashrc
以后就可以在终端里直接输入$eclipse以启动eclipse
7.最后补充一点:上述操作中,我没有将jdk的路径写到环境变量中。其实可以不用写到环境变量中,只要在eclipse中创建java工程时,选择JRE的时候,选第三项即可,eclipse会识别到的。如下图:
当然,如果你非要写到环境变量里也行。终端里:sudo vim /etc/profile或者sudo gedit /etc/profile
在文件末尾添加新行:export PATH=$PATH:/home/user_name/jdk1.7.0_45/bin
保存关闭后,终端里:source /etc/profile
然后,在上述创建JAVA工程时,JRE的选项中选择第一项。
eclipse中GTK+工程的配置:
在eclipse中编写GTK+程序后,编译的时候会出错。可做如下设置:
1. 右击工程,选择prosperity,在弹出的菜单中,选择C/C++ Build-->setting
2.在GCC C Compiler --> Miscellaneous中的Other flags文本框后面添加
`pkg-config --cflags --libs gtk+-3.0`(如果想用3.x的库的话)
或`pkg-config --cflags --libs gtk+-2.0`(如果想用2.x的库的话)
3.在GCC C Compiler --> Includes里添加头文件路径。如下:
/usr/include/gtk-3.0
/usr/include/gtk-2.0
/usr/include/glib-2.0
4.在GCC C Linker --> Miscellaneous的Linker flags中,加上`pkg-config --cflags --libs gtk+-3.0`
5.在GCC C Linker中,command line pattern默认的内容为:
${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}
其中的FLAGS变量即第4步所设置的Linker flags,即`pkg-config --cflags --libs gtk+-3.0`,该命令不能处于输出文件之前。如果处于输出文件之前,编译器实际上是无法找到gtk+的库文件的。因此要将之放到最后,即把GCC C Linker中command line pattern的内容调整为:
${COMMAND} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS} ${FLAGS}
工程测试:在eclipse中建立一个C project,代码如下:
/*
* Helloworld.c
*
* Created on: 2013年11月22日
* Author: thomas
*/
#include <gtk/gtk.h>
typedef GtkWidget *PGtkWidget;
int main(int argc, char **argv)
{
PGtkWidget window, label;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(window), 300, 300);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
label = gtk_label_new("hello world!");
gtk_container_add(GTK_CONTAINER(window), label);
g_signal_connect(window, "delete_event", gtk_main_quit, NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
Build命令之后,Run as --> Local C/C++ Application,结果如下:
关于GTK+的配置,我是参考了以下的链接,在原作者的基础上进行了一些修正和补充。
参考链接:http://www.coder4.com/archives/989
至于CDT的配置,较零碎,也忘了参考的是哪几个链接了,见谅。
另附上版本信息:
ubuntu13.04
eclipse standard/SDK version:Kepler service release 1
gcc version:4.73
g++ version:4.73
JDK version:v7.0 u45