获取源码:
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