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