Menu

use_libportable

adonais

获取源码:

git clone https://github.com/adonais/libportable.git

编译源码:

1)mingw-w64编译器

需要安装msys(unix like)环境.

cd libportable

make clean

#编译32位dll.

make BITS=32

#或者编译64位dll.

make BITS=64

2)vc编译器

cd libportable

nmake -f Makefile.msvc clean

nmake -f Makefile.msvc

3)交叉编译

cd libportable

make clean

make CROSS_COMPILING="i686-w64-mingw32-"

使用libportable:

1)直接使用二进制dll文件

在Tools列表下载portable_bin.7z文件解压.通过Inject PE 程序

静态注入到xul.dll文件.

2)编译时动态链接libportable

补丁如下所示:

diff --git a/toolkit/library/Makefile.in b/toolkit/library/Makefile.in
--- a/toolkit/library/Makefile.in
+++ b/toolkit/library/Makefile.in
@@ -434,8 +432,24 @@ COMPONENT_LIBS += \
   ssltest \
   xpcom_glue_gtest \
   media_gtest \
   $(NULL)
endif

$(FINAL_TARGET)/dependentlibs.list: dependentlibs.py $(SHARED_LIBRARY) $(wildcard $(if $(wildcard $(FINAL_TARGET)/dependentlibs.list),$(addprefix $(FINAL_TARGET)/,$(shell cat $(FINAL_TARGET)/dependentlibs.list))))
        $(PYTHON) $< $(SHARED_LIBRARY) -L $(FINAL_TARGET) $(if $(TOOLCHAIN_PREFIX),$(addprefix -p ,$(TOOLCHAIN_PREFIX))) > $@
+
+ifeq ($(OS_ARCH)_$(GNU_CC),WINNT_1)
+ifneq ($(OS_ARCH)$(OS_TEST),WINNTx86_64)
+LDFLAGS += -Wl,-u__imp__memset_nontemporal_tt -lportable32
+else
+LDFLAGS += -Wl,-u__imp_memset_nontemporal_tt -lportable64
+endif
+endif
+
+ifdef _MSC_VER
+ifneq (64,$(findstring 64,$(OS_TEST)))
+LDFLAGS += -INCLUDE:"__imp__memset_nontemporal_tt" portable32.lib
+else
+LDFLAGS += -INCLUDE:"__imp_memset_nontemporal_tt" portable64.lib
+endif
+endif