﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-I smell magic in the air-随笔分类-gtest</title><link>http://www.cppblog.com/izualzhy/category/19732.html</link><description>坚持 相信自己</description><language>zh-cn</language><lastBuildDate>Tue, 31 Jul 2012 11:32:53 GMT</lastBuildDate><pubDate>Tue, 31 Jul 2012 11:32:53 GMT</pubDate><ttl>60</ttl><item><title>gtest 1.6的安装</title><link>http://www.cppblog.com/izualzhy/archive/2012/07/31/185772.html</link><dc:creator>izualzhy</dc:creator><author>izualzhy</author><pubDate>Tue, 31 Jul 2012 11:28:00 GMT</pubDate><guid>http://www.cppblog.com/izualzhy/archive/2012/07/31/185772.html</guid><wfw:comment>http://www.cppblog.com/izualzhy/comments/185772.html</wfw:comment><comments>http://www.cppblog.com/izualzhy/archive/2012/07/31/185772.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/izualzhy/comments/commentRss/185772.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/izualzhy/services/trackbacks/185772.html</trackback:ping><description><![CDATA[<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d53861ba-44e7-4d59-89fd-4704dd140c54" class="wlWriterEditableSmartContent">Technorati 标签: <a href="http://technorati.com/tags/gtest" rel="tag">gtest</a></div> <p>googletest是一个用来写C++单元测试的框架，它是跨平台的，可应用在windows、linux、Mac等OS平台上。下面，我来说明如何使用最新的1.6版本gtest写自己的单元测试。 <p>源码的获取地址： <p><a href="http://code.google.com/p/googletest/downloads/list">http://code.google.com/p/googletest/downloads/list</a> <p>注意1.6这个版本不再提供make install，直接看README吧。 <p>那么怎么编译呢？ <p>先进入gtest目录（解压gtest.zip包过程就不说了），执行以下两行命令： <p>g++ -I./include -I./ -c ./src/gtest-all.cc <p>ar -rv libgtest.a gtest-all.o <p>&nbsp; <p>碰到的问题： <p>/gtest-1.6.0/make$ make<br>g++ -I../include -g -Wall -Wextra -lpthread sample1.o sample1_unittest.o gtest_main.a -o sample1_unittest<br>gtest_main.a(gtest-all.o): In function `~ThreadLocal':下载了gtest1.5,gtest1.6,直接到make目录下执行make，总是报错如下：<br>/home/gary/share/gtest-1.6.0/make/../include/gtest/internal/gtest-port.h:1336: undefined reference to `pthread_getspecific' <p>原因是： <p>-lpthread的位置不对<br>g++ -I../include -g -Wall -Wextra sample1.o sample1_unittest.o gtest_main.a -o sample1_unittest –lpthread <p>这个主要是跟编译器获取符号有关，要满足先使用后定义才行。具体来讲就是，如果pthread在前面，编译器看到pthread_getspecific符号没有用到会丢弃掉，后面看到gtest-port需要，但pthread库已经被scan一遍并丢弃。 <img src ="http://www.cppblog.com/izualzhy/aggbug/185772.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/izualzhy/" target="_blank">izualzhy</a> 2012-07-31 19:28 <a href="http://www.cppblog.com/izualzhy/archive/2012/07/31/185772.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>