开发环境搭建完毕

我把emacs卸了,这个我爱了5年的baby。因为我觉得我目前用的这个桌面环境还是很稳定的,所以很少会用到控制台.事实是我根本不知道怎么切到控制台:-(
而在图形界面下,gedit已经很好用。虽然它不支持正则表达式搜索虽说它不能定义宏。唉…

eclipse+cdt真的是很不错的选择。只是opensolaris自带的gcc太老了,还是3.4.x。虽说这是gcc所有版本中用的最广泛的,但是…毕竟太老了。IPS中有4.3,其实我在freebsd下已经在用4.5了。但是遗憾的是gcc 4.3和gdb 6.3貌似很不兼容。所以必须自己编译gdb 6.6。不过编译的过程是很顺利的,第一次采用默认的prefix,顺利的就过了。第二次装在了/usr/下,但是它错误的把libexpat.so找在了/usr/lib,其实我加了-m64,应该去/usr/lib/64下找。我没仔细去看为什么这个会和prefix有关。

总的来说,就是eclipse 3.4.2+cdt/gcc 4.3/gdb 6.6/gmake/sun ld。

另外,发现一个很有用的宏:_GLIBCXX_DEBUG,其实它历史已久,反正3.4.x中就有了,但是我今天才发现。关于它的详细描述可参见http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode.html

一个例子是如此:

#include <iostream>
#include <string>

int main(void) {
    std::cout << "hello" << std::endl;
    std::string s("abc");
    char c=s[20];
    return EXIT_SUCCESS;
}

如果不加_GLIBCXX_DEBUG,它会顺利运行到main结尾并return 0。如果加了,在s[20]那里会抛异常(行为很像std::string.at)

hello
/usr/lib/gcc/i386-pc-solaris2.11/4.3.2/../../../../include/c++/4.3.2/bits/basic_string.h:721: typename _Alloc::rebind<_CharT>::other::reference std::basic_string<_CharT, _Traits, _Alloc>::operator [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]: Assertion '__pos <= size()' failed.
退出 (core dumped)

这么好的东西,你有什么理由拒绝它?

建议在config.h中直接加一句:

#ifndef NDEBUG
#define _GLIBCXX_DEBUG
#endif

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥