Harry's profileHarry Hall's Cyber SpacePhotosBlogListsMore Tools Help
Photo 1 of 12

Harry Hall

Occupation
Location
Interests

Harry Hall's Cyber Space

是金子总会闪光的
11/27/2006

三更半夜转贴技术贴(GCC)

 

gcc使用的方法 --

作者: www.linuxfans.org mozilla

1。gcc包含的c/c++编译器
gcc,cc,c++,g++,gcc和cc是一样的,c++和g++是一样的,一般c程序就用gcc编译,c++程序就用g++编译

2。gcc的基本用法
gcc test.c这样将编译出一个名为a.out的程序
gcc test.c -o test这样将编译出一个名为test的程序,-o参数用来指定生成程序的名


3。为什么会出现undefined reference to 'xxxxx'错误?
首先这是链接错误,不是编译错误,也就是说如果只有这个错误,说明你的程序源码本
身没有问题,是你用编译器编译时参数用得不对,你没

有指定链接程序要用到得库,比如你的程序里用到了一些数学函数,那么你就要在编译
参数里指定程序要链接数学库,方法是在编译命令行里加入-lm。

4。-l参数和-L参数
    -l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文
件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了。
    好了现在我们知道怎么得到库名了,比如我们自已要用到一个第三方提供的库名字叫lib
test.so,那么我们只要把libtest.so拷贝到/usr/lib里,编译时加上-ltest参数,我们就能用上libtest.so库了(当然要用libtest.so库里的函数,我们还需要与libtest.so配套的头文件)。

    放在/lib和/usr/lib和/usr/local/lib里的库直接用-l参数就能链接了,但如果库文件
没放在这三个目录里,而是放在其他目录里,这时我们只用-l参数的话,链接还是会出错,出错信息大概是:“/usr/bin/ld: cannot find -lxxx”,也就是链接程序ld在那3个目录里找不到libxxx.so,这时另外一个参数-L就派上用场了,比如常用的X11的库,它放在/usr/X11R
6/lib目录下,我们编译时就要用-L/usr/X11R6/lib -lX11参数,-L参数跟着的是库文件所在的目录名。再比如我们把libtest.so放在/aaa/bbb/ccc目录下,那链接参数就是-L/aaa/bbb/ccc -ltest
    另外,大部分libxxxx.so只是一个链接,以RH9为例,比如libm.so它链接到/lib/libm.s/lib/libm.so.6又链接到/lib/libm-2.3.2.so,如果没有这样的链接,还是会出错,因为ld只会找libxxxx.so,所以如果你要用到xxxx库,而只有libxxxx.so.x或者libxxxx-x.x.x.so,做一个链接就可以了ln -s libxxxx-x.x.x.so libxxxx.so.

    手工来写链接参数总是很麻烦的,还好很多库开发包提供了生成链接参数的程序,名字一般叫xxxx-config,一般放在/usr/bin目录下,比如gtk1.2的链接参数生成程序是gtk-config,执行gtk-config --libs就能得到以下输出

"-L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lXi -lXext -lX11 -lm",这就是编译一个gtk1.2程序所需的gtk链接参数,xxx-config除了--libs参数外还有一个参数是--cflags用来生成头文件包含目录的,也就是-I参数,在下面我们将会讲到。你可以试试执行gtk-config --libs --cflags,看看输出结果。
    现在的问题就是怎样用这些输出结果了,最笨的方法就是复制粘贴或者照抄,聪明的办
法是在编译命令行里加入这个`xxxx-config --libs --cflags`,比如编译一个gtk程序:gcc gtktest.c `gtk-config --libs --cflags`这样就差不多了。注意`不是单引号,而是1键左边那个键。

    除了xxx-config以外,现在新的开发包一般都用pkg-config来生成链接参数,使用方法
跟xxx-config类似,但xxx-config是针对特定的开发包,但pkg-config包含很多开发包的链接参数的生成,用pkg-config --list-all命令可以列出所支持的所有开发包,pkg-config的用法就是

pkg-config pagName --libs --cflags,其中pagName是包名,是pkg-config--list-all里列出名单中的一个,比如gtk1.2的名字就是gtk+,pkg-config gtk+ --libs --cflags的作用跟gtk-config --libs --cflags是一样的。比如:
gcc gtktest.c `pkg-config gtk+ --libs --cflags`。

5。-include和-I参数
-include用来包含头文件,但一般情况下包含头文件都在源码里用#i nclude xxxxxx实现,-include参数很少用。-I参数是用来指定头文件目录,/usr/include目录一般是不用指定的,gcc知道去那里找,但是如果头文件不在/usr/include里我们就要用-I参数指定了,比如头文件放在/myinclude目录里,那编译命令行就要加上-I/myinclude参数了,如果不加你会得到
一个"xxxx.h: No such file or directory"的错误。-I参数可以用相对路径,比如头文件在当前目录,可以用-I.来指定。上面我们提到的--cflags参数就是用来生成-I参数的。

6。-O参数
    这是一个程序优化参数,一般用-O2就是,用来优化程序用的,比如gcc test.c -O2,优
化得到的程序比没优化的要小,执行速度可能也有所提高(我没有测试过)。

7。-shared参数
    编译动态库时要用到,比如gcc -shared test.c -o libtest.so

8。几个相关的环境变量
PKG_CONFIG_PATH:用来指定pkg-config用到的pc文件的路径,默认是/usr/lib/pkgconfig,pc文件是文本文件,扩展名是.pc,里面定义开发包的安装路径,Libs参数和Cflags参数等等。
CC:用来指定c编译器。
CXX:用来指定cxx编译器。
LIBS:跟上面的--libs作用差不多。
CFLAGS:跟上面的--cflags作用差不多。
CC,CXX,LIBS,CFLAGS手动编译时一般用不上,在做configure时有时用到,一般情况
下不用管。
环境变量设定方法:export ENV_NAME=xxxxxxxxxxxxxxxxx

9。关于交叉编译
    交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上,比
如在我们地PC平台(X86 CPU)上编译出能运行在sparc CPU平台上的程序,编译得到的程序在X86 CPU平台上是不能运行的,必须放到sparcCPU平台上才能运行。当然两个平台用的都是linux。这种方法在异平台移植和嵌入式开发时用得非常普遍。
    相对与交叉编译,我们平常做的编译就叫本地编译,也就是在当前平台编译,编译得到
的程序也是在本地执行。

   用来编译这种程序的编译器就叫交叉编译器,相对来说,用来做本地编译的就叫本地编
译器,一般用的都是gcc,但这种gcc跟本地的gcc编译器是不一样的,需要在编译gcc时用特定的configure参数才能得到支持交叉编译的gcc。

    为了不跟本地编译器混淆,交叉编译器的名字一般都有前缀,比如sparc-xxxx-linux-gn
u-gcc,sparc-xxxx-linux-gnu-g++ 等等

10。交叉编译器的使用方法
   使用方法跟本地的gcc差不多,但有一点特殊的是:必须用-L和-I参数指定编译器用spar
c系统的库和头文件,不能用本地(X86)的库(头文件有时可以用本地的)。
例子:
sparc-xxxx-linux-gnu-gcc test.c -L/path/to/sparcLib -I/path/to/sparcInclude

 
10/3/2006

微机课上讲到的集成块

都是20多年前的老古董了,竟然家里有。。。正好现在上课讲到,拿出来晒一晒
9/17/2006

转载几幅超有感觉的画

 
网上看到的超有感觉的几幅画,特此转载(作品均出自雷晟gooncoo)
 
 

9/16/2006

翻译什么时候能达到这个层次就好了

原文:回了一趟老家,起了个念头,想写一下老家的姑娘们
译文:The recent trip back home gives me the idea of writing about the girls there.
 
原文:The isolation of the rural world because of the distance and the lack of transport facilities is compounded by the paucity of the information media.
译文:农村地处偏僻,交通不便,从而与外界隔绝。而通讯工具的缺乏,始之更为闭塞。
 
羡慕啊~~
7/6/2006

hjx经典解说改编(ZZ)

解聘!解聘!解聘!中央电视台立功了!中央电视台立功了!不要给黄健翔任何的机会!伟大的中央电视台的领导!他继承了中华民族的光荣的传统!三个代表、保先、八荣八耻在这一刻灵魂附体、中央电视台台长一个人,他代表了中国的悠久的历史传统!在这一刻,他不是一个人在战斗!他不是一个人!领导,领导面对这个解聘书,他面对的是全中国球迷的目光和期待!
      
  黄健翔曾经在世界杯决赛的附加赛中面临这种情况,他深知这一点,他还能够微笑着面对他面前的这个人吗?十秒钟以后,他会是怎样的表情?
      
  解聘书下达啦!黄健翔下岗啦!中央电视台队获得了胜利!淘汰了黄健翔!他们没有再一次放过黄健翔,伟大的CCTV!伟大的中国领导,伟大的party今天生日快乐!中国万岁!他不辜负中国人的期望!这个解聘书一个绝对理论上的绝杀,绝对的死角!中央电视台进入了一个新时代!胜利属于中国,属于其它解说员,属于工作人员,属于领导,属于party,属于所有爱party的人!
      
  让他滚蛋吧……黄健翔也许会后悔的。他在公费出国的前提下,他说得太自我,太放肆了!他失去了自己的理智,面对中国悠久的传统,他没有拿出沉着作风,他终于自食其果。他该回家了,他不用回遥远的中国,他就在意大利生活,再见!
5/11/2006

4月11日《狮子王》复旦行相关媒体报道

未演先热 《狮子王》走进校园
东方网4月12日消息:即将于今年夏天登陆上海的迪士尼音乐剧《狮子王》未演先热。昨晚,上海大剧院王者之狮,荣耀之旅艺术沙龙活动来到复旦大学,让大学生们提前感受到了来自这部巨作的火热冲击。

  昂首阔步的长颈鹿,飞扑过来的小鸟,欢腾跳跃的羚羊,非洲大草原的景象深深吸引了复旦学子。在短短一个半小时的时间里,上海大剧院以现场讲解为主、穿插精彩视频,向在座的大学生们形象生动地展现了《狮子王》这部音乐剧的魅力。据悉,王者之狮,荣耀之旅艺术沙龙推广活动已经在多个大学及中学举行。大剧院表示,他们将专门为学生保留双休日下午场的F类票,票价为100元,凭学生证可到大剧院售票中心购买。

http://imedia.eastday.com/node2/node5/node17/userobject8i27945.html

 (有视频D)


《狮子王》未演先热 高校学子感受音乐剧魅力
2006-4-13 10:14:53
  即将于今年夏天登陆上海的迪士尼音乐剧《狮子王》未演先热。昨晚,上海大剧院王者之狮,荣耀之旅艺术沙龙活动来到复旦大学,让大学生们提前感受了这部巨作的魅力。
  昂首阔步的长颈鹿,飞扑过来的小鸟,欢腾跳跃的羚羊,非洲大草原的景象深深吸引了复旦学子。在短短一个半小时的时间里,上海大剧院以现场讲解为主、穿插精彩视频,向在座的大学生们形象生动地展现了《狮子王》这部音乐剧的魅力。据悉,王者之狮,荣耀之旅艺术沙龙推广活动已经在多个大学及中学举行。大剧院表示,他们将专门为学生保留双休日下午场的F类票,票价为100元,凭学生证可到大剧院售票中心购买。记者李姬芸报道

---新闻综合频道报道

http://www.smg.cn/root/news/content.aspx?NewsId=88611

(哈哈,还是SMG老牌记者李姬芸报道的) 


音乐剧《狮子王》校园推广

    各位听众,有史以来上座率最高的音乐剧《狮子王》将从今年7月18号起登陆上海,在上海大剧院演出至少一百场。为了迎接这一剧目的到来,由大剧院主办的音乐剧艺术沙龙昨晚走进了复旦校园,进行了音乐剧知识的普及和推广活动。请听报道:
    当音乐剧《狮子王》中最为脍炙人口的《今晚感受我的爱》唱段响起时,在场的一百多位学生一下子沉浸在了狮子王辛巴的传奇故事当中。加上专业人士的现场讲解,和穿插其中的音乐配音及精彩视频,学生们很快就领略到了音乐剧这一当代最具时尚性的舞台戏剧样式的独特魅力。接下来,现场学唱《狮子王》开场非洲祖鲁语唱段的环节更把气氛推向高潮
     在场的学生中有不少是复旦大学音乐剧协会的成员,这个协会成立不到两年,就吸收了近百人参加,并开始酝酿自己的原创作品:
    [主要还是百老汇的一些音乐剧常看一点,(韦伯的)法国的,浪漫主义,都看过的。(音乐剧的魅力啊,比较成熟地把各种音乐元素融合在舞台上的形式,反映各种各样的题材)原创是下一步的计划,但会考虑模仿比较成熟的音乐剧。]
    学生们对音乐剧的热情让大剧院方面倍受鼓舞,离开复旦,他们还将赶赴同济、市三女中等十多所学校,继续进行普及推广活动。上海大剧院音乐剧项目主管费元洪表示,音乐剧在上海从来就不缺少观众,《狮子王》目前的出票速度已经超过了去年《剧院魅影》的一倍还多,之所以还要频频进入校园,是为了更好地培育市场:
    [我们希望不但是票房,而是影响力能够扩大出去,大学生是消费的未来,他们对音乐剧的了解会影响很多人,更重要的是传播音乐剧的概念。]
    大剧院艺术总监钱世锦还在现场透露,为了完美展现《狮子王》梦幻般的舞台效果,大剧院将史无前例提前一个月停止其他演出,把非洲大草原的壮阔美景搬上舞台:
    [6月16号的早晨,道具就要进入了。这次一共有33个四十尺的集装箱,要用三架波音747的飞机从悉尼运过来,这是史无前例的。装台整整要一个月,我们只能停止其他的演出。]
    以上由东广实习记者孟诚洁报道。

 http://www.smg.cn/root/radio/news1045/news.aspx?NewsID=88477

最早出来的报道,12号早上就播了


其他的报道

预售票房已逾五百万 《狮子王》推广有绝活(图)
2006年04月21日 10:43



  距离首演还有3个月时间,“狮王”雄壮的脚步声已清晰可闻。记者从上海大剧院获悉,截至4月20日,英文原版音乐剧《狮子王》的预售票房已突破500万元,销售数字过12000张,比《剧院魅影》同期增长了一倍,创下了申城演出未演先热的票房奇迹。

  要问“狮王”如何得以“称霸”?上海大剧院赢在了全新的剧目推广理念——不为卖票而卖票,以文化推广带动市场销售。在演出市场急功近利的今天,一个着眼长期文化市场建设的推广活动看似成本高昂,其实“收益”良多。近一个月来,“王者之狮,荣耀之旅”音乐沙龙活动陆续走进学校、企业,介绍该剧音乐、舞美等幕后故事,向学生及广大市民普及音乐剧知识,努力创造着演艺项目推广中文化和经济的“双赢”结果。

  学生与“狮王”同乐

  从上海外国语大学的首站校园宣讲开始,音乐剧《狮子王》已经先后走进了华东政法学院等7所大中院校,推广活动在校园中掀起一股热潮。记者在复旦大学讲座现场看到,宣讲会内容丰富形式活泼,既有音乐剧《狮子王》精彩视频剪辑又有搞笑的现场互动环节,高潮迭起,台下台上笑成一片。复旦大学中文系学生董宇明说:“没想到音乐剧原来这么有意思,在我的印象中音乐剧是一个很古老的艺术,确实没想到音乐剧是如此‘年轻’和‘时尚’!”

  随着宣讲会的一次次“播种”,音乐剧文化在上海渐渐“生根”、“发芽”。虽然宣讲会上每当专家问起“这里有多少人在现场看过音乐剧”时,会场内举手的人数总是寥寥,但问到“四大音乐名剧是哪些”的时候,有不少大学生都能脱口而出。今天的大学生就是未来剧场内的“主流观众”,从这个意义上说,音乐剧文化讲座校园行的影响绝不仅仅在于一部《狮子王》。

  推广非简单推销

  大剧院院长方世忠说,演艺项目的推广不能停留在为卖票而卖票的阶段。音乐剧《狮子王》的推介着眼点是对观众的开掘、培养乃至演出文化市场的长期培育。迪斯尼巨作《狮子王》包含着不同的文化元素:视觉、音乐、造型、布景,并且运用了各种方式制造出混合产物。比方说,在面具上运用具有非洲风情的涂彩等;在舞蹈上,现代风格、加勒比风格、非洲风格,甚至连芭蕾都运用其中。

  正因为如此,《狮子王》校园推广并不因为学生的购买力有限而“简单”,事实上每次讲座都经过精心设计,音乐来源和舞美制作的“花絮”引人入胜,而其中所选择的视频片段虽然短,却能让观众直接感受到代表当代世界舞台艺术最高水准的“魔法奇迹”。讲座主讲人之一的费元洪说,他们准备了一段美国著名舞美大师朱丽·泰默制作道具的幕后“故事”,因为《狮子王》的道具设计在全球舞台剧都是一次“革命”,与《猫》的化妆效果完全不同——演员并没有被埋没在面具和戏装后面,每个演员的脸都可以清楚地被看到,体现了全新“人性的动物”的创作观念。

  从爱好者到志愿者

  记者了解到,随着音乐剧文化的普及深入,一些音乐剧爱好者逐渐加入到“专业”队伍中来。不少“爱音客”网站上的网友自愿加盟,成为了《狮子王》校园行的志愿者。他们工作异常用心,为了一个画面制作不惜返工数次,为了寻找最合适的一个道具四处奔波,而志愿者们的付出已经有了可喜的回报。复旦大学爱乐协会张同学说:“说实话,与流行音乐等相比,学校中喜欢音乐剧、歌剧的同学不是很多,但肯定会越来越多。”(来源:文汇报,记者/邢晓芳)