博客日历
2025年04月 | ||||||
一 | 二 | 三 | 四 | 五 | 六 | 七 |
31 | 1 | 2 | 3 | 4 | 5 | 6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 1 | 2 | 3 | 4 |
存档
2025年03月 2024年
03月 04月 05月 2021年
01月 02月 11月 12月 2020年
02月 03月 04月 05月 06月 07月
09月 2018年
09月 2017年
01月 02月 07月 2016年
01月 04月 07月 08月 11月 12月
2015年
01月 02月 03月 05月 09月 10月
11月 2014年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2013年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2012年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2011年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2010年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2009年
03月 04月 05月 06月 07月 08月
09月 10月 11月 12月
在AIX上使用GCC编译SpiderMonkey-1.8.5
SpiderMonkey 是 Mozilla 的 JavaScript 引擎,目前的版本是1.8.5,这里记录一下它在AIX上的编译过程。
下载地址:https://developer.mozilla.org/zh-CN/docs/SpiderMonkey
GCC等GNU软件的下载地址:http://www-03.ibm.com/systems/power/software/aix/linux/toolbox/ezinstall.html
1.修改configure和configure.in
参见:https://www.ibm.com/developerworks/aix/library/au-gnu.html
MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib'
改为:
MOZ_FIX_LINK_PATHS=''
2.修改jsnativestack.cpp
参见:http://hg.mozilla.org/mozilla-central/rev/70d9c9f2c148
--- a/js/src/jsnativestack.cpp
+++ b/js/src/jsnativestack.cpp
@@ -155,40 +155,43 @@ JS_STATIC_ASSERT(JS_STACK_GROWTH_DIRECTI
void *
GetNativeStackBaseImpl()
{
stack_t st;
stack_getbounds(&st);
return static_cast<char*>(st.ss_sp) + st.ss_size;
}
+#elif defined(AIX)
+
+#include <ucontext.h>
+
+JS_STATIC_ASSERT(JS_STACK_GROWTH_DIRECTION < 0);
+
+void *
+GetNativeStackBaseImpl()
+{
+ ucontext_t context;
+ getcontext(&context);
+ return static_cast<char*>(context.uc_stack.ss_sp) +
+ context.uc_stack.ss_size;
+}
+
#elif defined(XP_OS2)
void *
GetNativeStackBaseImpl()
{
PTIB ptib;
PPIB ppib;
DosGetInfoBlocks(&ptib, &ppib);
return ptib->tib_pstacklimit;
}
-#elif defined(SOLARIS)
-
-#include <ucontext.h>
-
-void *
-GetNativeStackBaseImpl()
-{
- stack_t st;
- stack_getbounds(&st);
- return static_cast<char*>(st.ss_sp) + st.ss_size;
-}
-
#else /* XP_UNIX */
void *
GetNativeStackBaseImpl()
{
pthread_t thread = pthread_self();
# if defined(XP_MACOSX) || defined(DARWIN)
return pthread_get_stackaddr_np(thread);
3.编译安装
./configure --prefix=/home/usr1/SpiderMonkey-1.8.5 --with-pthreads --disable-shared-js
gmake
gmake install
4.测试
$ cd /home/usr1/SpiderMonkey-1.8.5/bin
$ ./js
js> var a = new Object;
js> a.s = "Test String!";
"Test String!"
上一篇: 完全删除ClearCase中残留的视图信息
下一篇: 通过远程线程注入DLL到指定进程
分类:Linux 查看次数:10831 发布时间:2014/4/20 22:42:20