编译:
对于ubuntu需要
sudo apt-get install bison fakeroot flex g++ g++-multilib gperf \ libapache2-mod-php5 libasound2-dev libbz2-dev libcairo2-dev \ libdbus-glib-1-dev libgconf2-dev libgl1-mesa-dev libglu1-mesa-dev \ libglib2.0-dev libgtk2.0-dev libjpeg62-dev libnspr4-dev libnss3-dev \ libpam0g-dev libsqlite3-dev libxslt1-dev libxss-dev \ mesa-common-dev msttcorefonts patch perl pkg-config python \ python2.5-dev rpm subversion libcupsys2-dev libgnome-keyring-dev \ libcurl4-gnutls-dev libelf-dev libc6-i386 lib32stdc++6
build/gyp_chromium -Ddisable_nacl=1
如果不disable_nacl时,编译nacl会出错
make chrome
make -j16 DumpRenderTree from http://www.chromium.org/developers/testing/webkit-layout-tests
make test_shell 编译test_shell
如果是ubuntu 11.10编译时出现variable ‘msg_is_ok__’ set but not used [-Werror=unused-but-set-variable]错误,可以设置环境变量,使编译器忽略warning作为error,命令如下:export GYP_DEFINES="werror=''"
相关讨论:file:///home/zhanggang/Desktop/Issue%2080071%20-%20chromium%20-%20No%20compile%20on%20gcc-4.6%20-%20An%20open-source%20browser%20project%20to%20help%20move%20the%20web%20forward.%20-%20Google%20Project%20Hosting.html
另外,编译时如果出现链接时内存超出限制,可以参考http://code.google.com/p/chromium/wiki/LinuxFasterBuilds设置export CC="gcc -B/usr/local/gold/bin"
上面的编译会生成一个静态库的程序,如果要编译成动态库,在生成makefile是要采用下面的命令:
./build/gyp_chromium -D component=shared_library -D disable_nacl=1
资源:
- http://www.chromium.org/developers chromium for developer的hub页面,很多重要的信息都可以从这个页面中找到
- http://www.chromium.org/developers/how-tos/get-the-code 该页面告诉你如何获取chromium的代码,基本步骤就是:
2)check out "gclient";
3)使用gclient更新代码
4)如果在更新代码是出现类似>svn: UUID mismatch: pymox的错误,可以把tar包中的pymox删除,在运行更新命令
- http://www.chromium.org/developers/how-tos/getting-around-the-chrome-source-code 从比较高的层面介绍了源代码中各个目录的内容
- http://www.chromium.org/developers/design-documents 从工程角度对chrome设计的更加详细的文档
- http://mogoweb.net/archives/144 关于test_shell
- http://mogoweb.net/archives/152 gyp(generate your project)
WebKit部分
1、webkit编程中指针使用规范:http://www.webkit.org/coding/RefPtr.html
这是一个很有价值的文章,读懂了它就了解了webkit中对象的创建,指针的传递,函数返回值为指针时如何返回,以及引用计数指针与raw指针相互转化等问题。一般webkit中将类的构造函数设置为private,通过create创建对象,返回RefPtr的对象指针,防止内存泄露。