macports在Leopard下编译universal的一个问题

转载自水木jjgod的blog
http://blog.jjgod.org/2007/12/03/macports-leopard-universal-issue/ 

December 3rd, 2007 by jjgod

近来在开发一个小软件,需要分发程序链接了一些用 macports 安装的库,众所周知,用 macports 安装 universal binary 程序是通过 +universal 这个缺省 variant 实现的。在默认情况下,显然用户不愿意安装 universal 的,既然都在自己机器上编译了,去编译其他平台的二进制程序即浪费时间又浪费空间。所以默认这个 variant 是禁用的,可是如果你自己开发的 Universal Binary 应用要链接用 macports 安装的那些库时,就必须首先确保这些库是 universal binary。

可是在 10.5 下通过 +universal 之后,链接程序会遇到类似下面的错误:

$ sudo port install gettext +universal

—>  Building gettext with target all
Error: Target org.macports.build returned: … returned error 2

gcc -dynamiclib  -o … -L/opt/local/lib -lc 
-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386
-arch ppc -arch i386 -arch ppc -Wl,-framework -Wl,CoreFoundation
-install_name  /opt/local/lib/libintl.8.dylib
-compatibility_version 9 -current_version 9.2
ld: library not found for -ldylib1.10.5.o
collect2: ld returned 1 exit status

这是什么原因呢?仔细看最关键的地方在于,macports 缺省使用了 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc 这个编译器参数来生成,可是在 Mac OS X 10.5 下,如果仅仅使用这个参数,系统仍然会以为你要编译的是 10.5 下运行的程序,所以最后会尝试链接 10.5 的 libc,问题是 10.5 的 libc 在 10.4 的 SDK 路径下当然找不到,于是就出错了。参考 Xcode-Users 上的讨论(http://lists.apple.com/archives/Xcode-users/2007/Oct/msg00686.html)。

怎么解决呢?也简单,加上 -mmacosx-version-min=10.4 这个编译参数就行了。不过对于 macports 来说,在哪儿加倒是一个问题,你可以针对每个 port,在 Portfile 里加上:

configure.universal_cflags-append  "-mmacosx-version-min=10.4"

也可以一劳永逸地通过修改 /opt/local/share/macports/Tcl/port1.0/portconfigure.tcl 脚本中的 default configure.universal_cflags 实现,这里是一个简单的 patch(http://trac.macosforge.org/projects/macports/attachment/ticket/13475/portconfigure.t cl.diff)。

这个 patch 已经发到了 macports 的 trac 上,希望能尽快在官方版本中得到修复。

/*
这个问题上次我试图编译aMule CVS Universal Binary的时候就发现了,呵呵。这次要把常用的开发工具全部搞成Universal Binary的。其实Universal Binary这个东东就和Classical一样,总是对一半人有用,一半人没用,但是对于开发者就比较痛苦了。要么准备两套开发平台,要么从头开始把各种libs和tools全部搞成Universal Binary。在x86平台上编译PowerPC构架部分真是慢。。。。

     1:你是否像鞭炮一样一点就着?一点就着的下场就是炮灰。
     2:在着之前你是否仔细思考?
     3:当你收到抵制家乐福的短信后,你是否马上转发群发?
     4:转发之前你是否做过考证?家乐福的大老板是否赞助过达赖?你是否上网搜索过?你是否看过明确的资料或者确凿的证据?
     5:假设不是这样,你是否也要为自己的乌龙找一个理由?比如好歹也是个法国企业,比如是某个幕后的股东干的?
     7:假设是这样,你是否会为家乐福的确赞助了达赖而长舒一口气,并且暗自高兴?那你究竟是爱国呢还是不爱国?
     8:去现场抵制和集会的人,你是否兴奋大于愤怒?
     9:你是否第一次参加或者打算参加游行或者集会?就像车友会喜欢列队行车一样,你是否感觉的个人力量被放大?你是否会信以为真?你是否会鸡血沸腾?你是否都快忘了自己是去干嘛的了?你是否最后抱着一种想看好戏的想法?
     10:家乐福可以抵制,让你全家移民法国,你是否能抵制?
     11:给你一次法国游,你是否能抵制?

     12:你是否不能接受欧洲国家对反华势力的容忍和支持?你是否不能接受外电的歪曲事实和侮辱性词汇?你是否觉得应该由欧宣部将它们全部封杀?

爱国者的十七大自由

冉云飞

我知道国与党、政府是不一样,这是应然状态。但从目下中国的实然状态以及被置换、偷换、绑架的实际效果来看,目前中国这样的国其心脏是政府,其灵魂是党。所以在中国目前这种现实环境及语境中,爱国难免更多时候是在爱党,不管你承不承认,这便是你不理智爱国的吊诡。不承认这样的吊诡,而不分清红皂白地爱,反而可能被这个"国"把你卖了。下面我们就来说点爱国青年们也许没有意识到充满吊诡意味的事吧。政府才开到十七大,所以就来个十七大自由吧。官方才开十七大,你来个十八大,不是太僭妄了吗?八佾舞于庭,是可忍,孰不可忍?

国当然可以爱,但应该清醒而理智地爱。对当下爱国的处境有清醒的认识,才不至于像安替说的那样盲目地"爱国爱到夏商周",更不至于"爱国一定要爱到变态"。换言之,"爱国者"的确应该理智,不应该成为自己控制不住的"飞毛腿",也就是"爱国者"最终拦不住自己骨子里的"飞毛腿",那惨祸就搞得太大了。当然,即便你像如下发高烧者的"爱国"自由,我也是尊重,我只是遗憾,因为在我看来有更好的爱国方式和途径,所以不惮说出来,请大家批评。

一:你有在异国游行的自由,你更有回国不能游行的自由。

在别国你可以随意游行,在我们这里你结伙散步就有麻烦,爱国的权利没有配发给你,你咋能不经同意随便爱呢?你有异地爱国的自由,但你更有回国不能随便爱国的自由。在美、法、英等国你可以上大街去爱你的国,当然回国了,你还可以到网上爱国。

二:你有当众指斥别国政府及该国领导人的自由,你更有不能当众指斥自己的政储和领导人的自由。

将八十年代的政治笑话延伸一下吧(后面一句是我加的):美国人有到白宫去骂里根的自由,苏联人有到克里姆林宫去骂里根的自由,中国人有不能到中南海去骂里根的自由。

三:你有看不到CNN的权利,但你却有抗议CNN的自由。

在中国找不到像CNN这样的软柿子,因为这里没有私人媒体,抗议官方喉舌的后果可想而知。

四:你有建网站反CNN的自由,但你更有不能建网站反《人民日报》的自由。

我们需要像反CNN一样有反《人民日报》的自由,这才是深层的爱国方式。

五:你有在纸面上反台独、藏独、疆独的自由,你更有不能结社、集会去公共场所反他们的自由。

主统一、反分裂好像是万分的爱国,但国是你随便爱的么?你只有听从官方让你怎么去爱的自由。

六:你有爱国的自由,但国更有不爱你的自由。

老舍小说人物说:我爱大清,可谁爱咱啊。

七:你有爱国的自由,但更有让你办暂住证的自由。

作为一个爱国青年,你为何暂住在中国?除非你能给我证明那些要办暂住证的人都不爱国。

八:你有反对国外将奥运政治化的自由,你更有支持国内政府将奥运政治化的自由。

中国可以集中一切力量办大事,当然更可以"集中一切力量"反对别人来抗议他这样伤害人权地办"大事"。

九:你有不能随意接受诸种信息的自由,你更有夫妻俩在家中都不能看黄碟的自由。

广电总局、新闻出版总署把爱国青年需要的自由发挥到了极致,毋须赘述。

十:你有被官方当作一张牌来打的自由,你更有被官方随意抛弃的自由。

你爱国反日游行,他看到有用,就让你去游。过两天他怕事态弄到他无法控制,就免了你爱国的权利。这两天你的"爱国"情怀得到他们允许,于是你感到扬眉吐气,但过两天他们为了奥运就要收了,某种意义上讲不准你"爱国"了,这就是官方对于你"爱国"的态度。

十一:你有发表支持政府言论的自由,你更有发表批评政府言论而遇上危险的自由。

胡佳、郭飞雄等就是榜样,榜样的力量是无穷的呢还是吓得魂飞魄散呢?如果哪天批评中国政府像批评任何别国政府一样自由(实质上批评别国政府也不自由,你看传媒的国际版如何统一口径就知道了),那么爱国便成了一件名正言顺的事情。

十二:你有公开表扬政府的自由,你更有在笼子里爱国的自由。

布什说,人类的伟大成果之一,就是民众将政府关进笼子,让政府驯服地在笼子里说话,而不是相反。

十三:凡是敌人反对的,我们就有拥护的自由。凡是敌人拥护的,我们更有反对的自由。

这是对毛泽东语录的深入学习。

十四:你有在网络上爱国的自由,但你更有深陷敏感词、过滤词而发不出来的自由。

包括你在网络上爱国,恐怕都会遇着这样的尴尬。"爱国"尚且不能自由,何况其它乎?

十五:你有维护"圣"火的自由,你更有必须警察陪同才能进京观看奥运会的自由。

维护"圣"火要几十个彪形大汉,陪你看奥运更要有几万警察,泱泱大国真壮观哉!巍巍乎?荡荡乎?真乃可爱之国也。

十六:你有抵制中国家乐福的自由,你更有明天就去法国而不回来的自由。

想一想克林顿北大演讲时的"爱国者"马楠吧,她到美国的速度比她批评美国时的激昂要令人难忘得多。不是说你批评了美国,就不能去美国,而是说你至少在某段时间要心口如一吧,比川剧变脸王还快,就让我们这些脑筋不够用的人想不明白了。同时,你到家乐福去抵制的自由说不定到头来都会被绑架你爱这国的政府制止,不信大家拭目以待。我是反对抵制家乐福,我认为这抵制很愚蠢,但你有抵制的自由,可是这自由到时也会竹篮打水一场空。再次告知这样的"爱国者",国可不是随便爱的。

十七:你有到西方国家去享受民主的自由,更有说中国不适合搞民主的自由。

有不少海龟或者海不龟的"爱国者"都有这样的想法吧,这样的"爱国者"比例好像也不少吧。大概是他们用自己的实际行动证明,中国人只能到别处去享受现成的自由,不能在自己的国家争取自由吧。

谈论 MS太贱了——关于firefox在live space无法发布日志的解决

 

引用

MS太贱了——关于firefox在live space无法发布日志的解决
刚刚用firefox发布日志,才发现竟然发布日志和保存为草稿两个按钮是灰色的
心想MS你要打击firefox也用不着这样吧,于是又一顿google,又让我找到了解决办法:

首先,你需要安装Firefox扩展 greasemonkey。这个扩展可以使你在加载一个页面的时候执行一段你自己的Javascript程序。

安装之后,将下面的程序拷贝到一个文本文件,并把扩展名改成 .user.js。(务必是.user.js,否则greasemonkey无法自动安装之)。

===脚本开始,拷贝时请不要包含这一行===
// ==UserScript==
// @name Enable Live Space Post Button
// @namespace http://ftofficer.spaces.live.com
// @description Enable Live Space Post Button
// @include http://*.spaces.live.com/*
// ==/UserScript==

function LiveSpace_enableButton(id) {
var button = document.getElementById(id);
if ( button ) {
var cls = button.getAttribute("class");
var clsNameEnd = cls.indexOf("spDisabled");
if ( clsNameEnd != -1 ) {
clsNameEnd–; // skip " " before spDisabled
var newCls = cls.substring(0, clsNameEnd);

button.setAttribute("class", newCls);
button.setAttribute("mi:state", "enabled");

var aNode = document.createElement("a");
aNode.id = id;
aNode.href = "#";
}
}
}

LiveSpace_enableButton("actionToolbarBlogPost");
LiveSpace_enableButton("actionToolbarSave");

===脚本结束,拷贝时请不要包含这一行===

然后将这个js文件拖放到Firefox窗口中,greasemonkey会弹出对话框询问是否安装,选择是,即可完成安装。

然后,去Live Space的“添加日志”当中看看吧。

如果看到“发布日志”和“保存为草稿”仍然没有启用的话,请看看greasemonkey当中配置的网直通配符是不是和你的网址一致,自己改改看看。在不行可以在这里回复。