gst制作成了静态库,而python2的gst有多个动态库引用gst的库

因此,想了一个办法将python2所需要的gst打包成一个单独的共享库

办法就是,将python2_gst所有的.so先制作成.a

通过nm -g加过滤的办法得到所有链接的gst函数

将这些函数生成一个小文件,在一个静态函数中引用所有这些函数

然后,将这个小文件编译成so文件,并链接gst库,这样,python2_gst所需要的gst函数就全部链接进来了

同时,可以将gst动态插件的方式也在启动时就注册进来,那样,python2_gst得到的包就是自包含的了

diff -Nur gst-python-0.10.22_test/codegen/gen_gst_import_code.py gst-python-0.10.22/codegen/gen_gst_import_code.py
--- gst-python-0.10.22_test/codegen/gen_gst_import_code.py 2015-01-18 22:01:56.753066000 +0800
+++ gst-python-0.10.22/codegen/gen_gst_import_code.py 1970-01-01 08:00:00.000000000 +0800
@@ -1,32 +0,0 @@
-import os,sys
-
-def main(argv):
- if len(argv) < 3:
- print "need more params."
- return -1
-
- src_file = argv[1]
- dest_file = argv[2]
- try:
- s_handle = open(src_file, "r")
- s_buff = s_handle.readlines()
- s_handle.close()
- except Exception, detail:
- print "Exception: {0}".format(detail)
- return -1
- try:
- d_handle = open(dest_file, "w")
- for line in s_buff:
- d_handle.write("extern void %s ();\n" % line[:-1])
- d_handle.write("\nstatic void __gst_import_functions ()\n{\n")
- for line in s_buff:
- d_handle.write(" %s ();\n" % line[:-1])
- d_handle.write("}\n\n")
- d_handle.close()
- except Exception, detail:
- print "Exception: {0}".format(detail)
- return -1
- return 0
-
-if __name__ == '__main__':
- sys.exit(main(sys.argv))
diff -Nur gst-python-0.10.22_test/codegen/gen_imp_code.sh gst-python-0.10.22/codegen/gen_imp_code.sh
--- gst-python-0.10.22_test/codegen/gen_imp_code.sh 2015-01-19 03:03:07.211836824 +0800
+++ gst-python-0.10.22/codegen/gen_imp_code.sh 1970-01-01 08:00:00.000000000 +0800
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-nm -g $1 | grep " U " | awk "{ print \$2}" | grep "^gst_"
-
diff -Nur gst-python-0.10.22_test/gst/gst_static_plugin_reg.c gst-python-0.10.22/gst/gst_static_plugin_reg.c
--- gst-python-0.10.22_test/gst/gst_static_plugin_reg.c 2015-01-18 23:20:09.490976826 +0800
+++ gst-python-0.10.22/gst/gst_static_plugin_reg.c 1970-01-01 08:00:00.000000000 +0800
@@ -1,4 +0,0 @@
-
-void init_register_static_gst_plugin()
-{
-}
diff -Nur gst-python-0.10.22_test/gst/Makefile.am gst-python-0.10.22/gst/Makefile.am
--- gst-python-0.10.22_test/gst/Makefile.am 2015-01-19 03:51:50.722665473 +0800
+++ gst-python-0.10.22/gst/Makefile.am 2011-10-20 20:31:28.000000000 +0800
@@ -53,9 +53,9 @@ # GStreamer bindings
_gst_la_CFLAGS = $(common_cflags)
-_gst_la_LIBADD = $(common_libadd)
+_gst_la_LIBADD = $(common_libadd) $(GST_BASE_LIBS)
_gst_la_LDFLAGS = $(common_ldflags) -export-symbols-regex "^(init_gst|_PyGObject_API|pygstminiobject_).*" \
- -lgst_pack
+ $(GST_BASE_LIBS) $(GST_CONTROLLER_LIBS) $(GST_NET_LIBS) $(GST_DP_LIBS)
_gst_la_SOURCES = \
gst-argtypes.c \
gstmodule.c \
@@ -90,9 +90,9 @@ # GStreamer interfaces bindings
interfaces_la_CFLAGS = $(common_cflags) $(GST_PLUGINS_BASE_CFLAGS)
-interfaces_la_LIBADD = $(common_libadd) #-lgstinterfaces-$(GST_MAJORMINOR)
+interfaces_la_LIBADD = $(common_libadd) -lgstinterfaces-$(GST_MAJORMINOR)
interfaces_la_LDFLAGS = $(common_ldflags) \
- -export-symbols-regex "^(initinterface|_PyGObject_API).*" -lgst_pack
+ -export-symbols-regex "^(initinterface|_PyGObject_API).*" $(GST_PLUGINS_BASE_LIBS)
interfaces_la_SOURCES = interfacesmodule.c
nodist_interfaces_la_SOURCES = interfaces.c
INTERFACES_OVERRIDES = interfaces.override xoverlay.override
@@ -103,9 +103,9 @@ # GStreamer pbutils bindings
pbutils_la_CFLAGS = $(common_cflags) $(GST_PLUGINS_BASE_CFLAGS)
-pbutils_la_LIBADD = $(common_libadd) -lgst_pack
+pbutils_la_LIBADD = $(common_libadd) $(GST_PLUGINS_BASE_LIBS) -lgstpbutils-0.10
pbutils_la_LDFLAGS = $(common_ldflags) \
- -export-symbols-regex "^(initpbutils|_PyGObject_API).*" -lgst_pack
+ -export-symbols-regex "^(initpbutils|_PyGObject_API).*" $(GST_PLUGINS_BASE_LIBS)
pbutils_la_SOURCES = pbutilsmodule.c gst-argtypes.c
nodist_pbutils_la_SOURCES = pbutils.c
PBUTILS_OVERRIDES = pbutils.override
@@ -127,9 +127,9 @@
audio_lib = audio.la
pygstexec_LTLIBRARIES += $(audio_lib)
audio_la_CFLAGS = $(common_cflags) $(GST_PLUGINS_BASE_CFLAGS)
- audio_la_LIBADD = $(common_libadd) #$(GST_PLUGINS_BASE_LIBS) -lgstaudio-0.10
+ audio_la_LIBADD = $(common_libadd) $(GST_PLUGINS_BASE_LIBS) -lgstaudio-0.10
audio_la_LDFLAGS = $(common_ldflags) \
- -export-symbols-regex "^(initaudio|_PyGObject_API).*" -lgst_pack #$(GST_PLUGINS_BASE_LIBS)
+ -export-symbols-regex "^(initaudio|_PyGObject_API).*" $(GST_PLUGINS_BASE_LIBS)
audio_la_SOURCES = audiomodule.c gst-argtypes.c
nodist_audio_la_SOURCES = audio.c
audio.c: $(AUDIO_DEFS) $(AUDIO_OVERRIDES) $(GEN_FILES)
@@ -149,9 +149,9 @@
video_lib = video.la
pygstexec_LTLIBRARIES += $(video_lib)
video_la_CFLAGS = $(common_cflags) $(GST_PLUGINS_BASE_CFLAGS)
- video_la_LIBADD = $(common_libadd) #$(GST_PLUGINS_BASE_LIBS) -lgstvideo-0.10
+ video_la_LIBADD = $(common_libadd) $(GST_PLUGINS_BASE_LIBS) -lgstvideo-0.10
video_la_LDFLAGS = $(common_ldflags) \
- -export-symbols-regex "^(initvideo|_PyGObject_API).*" -lgst_pack # $(GST_PLUGINS_BASE_LIBS)
+ -export-symbols-regex "^(initvideo|_PyGObject_API).*" $(GST_PLUGINS_BASE_LIBS)
video_la_SOURCES = videomodule.c gst-argtypes.c
nodist_video_la_SOURCES = video.c
video.c: $(VIDEO_DEFS) $(VIDEO_OVERRIDES) $(GEN_FILES)
@@ -171,105 +171,15 @@
tag_lib = tag.la
pygstexec_LTLIBRARIES += $(tag_lib)
tag_la_CFLAGS = $(common_cflags) $(GST_PLUGINS_BASE_CFLAGS)
- tag_la_LIBADD = $(common_libadd) # $(GST_PLUGINS_BASE_LIBS) -lgsttag-0.10
+ tag_la_LIBADD = $(common_libadd) $(GST_PLUGINS_BASE_LIBS) -lgsttag-0.10
tag_la_LDFLAGS = $(common_ldflags) \
- -export-symbols-regex "^(inittag|_PyGObject_API).*" -lgst_pack #$(GST_PLUGINS_BASE_LIBS)
+ -export-symbols-regex "^(inittag|_PyGObject_API).*" $(GST_PLUGINS_BASE_LIBS)
tag_la_SOURCES = tagmodule.c gst-argtypes.c
nodist_tag_la_SOURCES = tag.c
tag.c: $(TAG_DEFS) $(TAG_OVERRIDES) $(GEN_FILES) endif -libgst_pack_lib = libgst_pack.la
-pygstexec_LTLIBRARIES += $(libgst_pack_lib)
-libgst_pack_la_SOURCES = gst_static_plugin_reg.c
-
-libgst_pack_la_CFLAGS = $(common_cflags) -fPIC
-libgst_pack_la_LIBADD = $(common_libadd) $(GST_BASE_LIBS)
-libgst_pack_la_LDFLAGS = -shared -fPIC $(GST_BASE_LIBS) $(GST_CONTROLLER_LIBS) $(GST_NET_LIBS) $(GST_DP_LIBS)
-nodist_libgst_pack_la_SOURCES = lib_gst.c
-CLEANFILES += lib_gst.c
-noinst_LIBRARIES = lib_gst.a
-lib_gst_a_CFLAGS = $(_gst_la_CFLAGS)
-lib_gst_a_SOURCES = $(_gst_la_SOURCES) $(nodist__gst_la_SOURCES)
-_gst_la_DEPENDENCIES = $(libgst_pack_lib)
-lib_gst.c: lib_gst.a
-
-
-if HAVE_PYGOBJECT_2_16
-libgst_pack_la_LDFLAGS += $(GST_LIBS) $(GST_OPTION_LIBS)
-nodist_libgst_pack_la_SOURCES += libgstoption.c
-CLEANFILES += libgstoption.c
-noinst_LIBRARIES += libgstoption.a
-libgstoption_a_CFLAGS = $(common_cflags)
-libgstoption_a_SOURCES = ../gstoptionmodule.c
-libgstoption.c: libgstoption.a
-
-
-endif
-
-libgst_pack_la_LDFLAGS += $(GST_PLUGINS_BASE_LIBS) -lgstinterfaces-$(GST_MAJORMINOR)
-nodist_libgst_pack_la_SOURCES += libinterfaces.c
-CLEANFILES += libinterfaces.c
-noinst_LIBRARIES += libinterfaces.a
-libinterfaces_a_CFLAGS = $(interfaces_la_CFLAGS)
-libinterfaces_a_SOURCES = $(interfaces_la_SOURCES) $(nodist_interfaces_la_SOURCES)
-interfaces_la_DEPENDENCIES = $(libgst_pack_lib)
-libinterfaces.c: libinterfaces.a
-
-
-libgst_pack_la_LDFLAGS += -lgstpbutils-0.10
-nodist_libgst_pack_la_SOURCES += libpbutils.c
-CLEANFILES += libpbutils.c
-noinst_LIBRARIES += libpbutils.a
-libpbutils_a_CFLAGS = $(pbutils_la_CFLAGS)
-libpbutils_a_SOURCES = $(pbutils_la_SOURCES) $(nodist_pbutils_la_SOURCES)
-pbutils_la_DEPENDENCIES = $(libgst_pack_lib)
-libpbutils.c: libpbutils.a
-
-
-if HAVE_GST_AUDIO
- libgst_pack_la_LDFLAGS += -lgstaudio-0.10
- nodist_libgst_pack_la_SOURCES += libaudio.c
- CLEANFILES += libaudio.c
- noinst_LIBRARIES += libaudio.a
- libaudio_a_CFLAGS = $(audio_la_CFLAGS)
- libaudio_a_SOURCES=$(audio_la_SOURCES) $(nodist_audio_la_SOURCES)
- audio_la_DEPENDENCIES = $(libgst_pack_lib)
-libaudio.c: libaudio.a
-
-
-endif
-
-if HAVE_GST_VIDEO
- libgst_pack_la_LDFLAGS += -lgstvideo-0.10
- nodist_libgst_pack_la_SOURCES += libvideo.c
- CLEANFILES += libvideo.c
- noinst_LIBRARIES += libvideo.a
- libvideo_a_CFLAGS = $(video_la_CFLAGS)
- libvideo_a_SOURCES=$(video_la_SOURCES) $(nodist_video_la_SOURCES)
- video_la_DEPENDENCIES = $(libgst_pack_lib)
-libvideo.c: libvideo.a
-
-
-endif
-
-if HAVE_GST_TAG
- libgst_pack_la_LDFLAGS += -lgsttag-0.10
- nodist_libgst_pack_la_SOURCES += libtag.c
- CLEANFILES += libtag.c
- noinst_LIBRARIES += libtag.a
- libtag_a_CFLAGS = $(tag_la_CFLAGS)
- libtag_a_SOURCES = $(tag_la_SOURCES) $(nodist_tag_la_SOURCES)
- tag_la_DEPENDENCIES = $(libgst_pack_lib)
-libtag.c: libtag.a
-
-endif
-
-.a.c:
- /bin/sh $(top_srcdir)/codegen/gen_imp_code.sh $< > $<.imp \
- && $(PYTHON) $(top_srcdir)/codegen/gen_gst_import_code.py $<.imp $@ \
- && rm -f $<.imp .defs.c:
$(AM_V_GEN)($(PYTHON) $(top_srcdir)/codegen/codegen.py \
diff -Nur gst-python-0.10.22_test/gst/Makefile_static.am gst-python-0.10.22/gst/Makefile_static.am
--- gst-python-0.10.22_test/gst/Makefile_static.am 2015-01-19 04:20:32.000000000 +0800
+++ gst-python-0.10.22/gst/Makefile_static.am 1970-01-01 08:00:00.000000000 +0800
@@ -1,92 +0,0 @@
-
-libgst_pack_lib = libgst_pack.la
-pygstexec_LTLIBRARIES += $(libgst_pack_lib)
-libgst_pack_la_SOURCES = gst_static_plugin_reg.c
-
-libgst_pack_la_CFLAGS = $(common_cflags) -fPIC
-libgst_pack_la_LIBADD = $(common_libadd) $(GST_BASE_LIBS)
-libgst_pack_la_LDFLAGS = -shared -fPIC $(GST_BASE_LIBS) $(GST_CONTROLLER_LIBS) $(GST_NET_LIBS) $(GST_DP_LIBS)
-nodist_libgst_pack_la_SOURCES = lib_gst.c
-CLEANFILES += lib_gst.c
-noinst_LIBRARIES = lib_gst.a
-lib_gst_a_CFLAGS = $(_gst_la_CFLAGS)
-lib_gst_a_SOURCES = $(_gst_la_SOURCES) $(nodist__gst_la_SOURCES)
-_gst_la_DEPENDENCIES = $(libgst_pack_lib)
-lib_gst.c: lib_gst.a
-
-
-if HAVE_PYGOBJECT_2_16
-libgst_pack_la_LDFLAGS += $(GST_LIBS) $(GST_OPTION_LIBS)
-nodist_libgst_pack_la_SOURCES += libgstoption.c
-CLEANFILES += libgstoption.c
-noinst_LIBRARIES += libgstoption.a
-libgstoption_a_CFLAGS = $(common_cflags)
-libgstoption_a_SOURCES = ../gstoptionmodule.c
-libgstoption.c: libgstoption.a
-
-
-endif
-
-libgst_pack_la_LDFLAGS += $(GST_PLUGINS_BASE_LIBS) -lgstinterfaces-$(GST_MAJORMINOR)
-nodist_libgst_pack_la_SOURCES += libinterfaces.c
-CLEANFILES += libinterfaces.c
-noinst_LIBRARIES += libinterfaces.a
-libinterfaces_a_CFLAGS = $(interfaces_la_CFLAGS)
-libinterfaces_a_SOURCES = $(interfaces_la_SOURCES) $(nodist_interfaces_la_SOURCES)
-interfaces_la_DEPENDENCIES = $(libgst_pack_lib)
-libinterfaces.c: libinterfaces.a
-
-
-libgst_pack_la_LDFLAGS += -lgstpbutils-0.10
-nodist_libgst_pack_la_SOURCES += libpbutils.c
-CLEANFILES += libpbutils.c
-noinst_LIBRARIES += libpbutils.a
-libpbutils_a_CFLAGS = $(pbutils_la_CFLAGS)
-libpbutils_a_SOURCES = $(pbutils_la_SOURCES) $(nodist_pbutils_la_SOURCES)
-pbutils_la_DEPENDENCIES = $(libgst_pack_lib)
-libpbutils.c: libpbutils.a
-
-
-if HAVE_GST_AUDIO
- libgst_pack_la_LDFLAGS += -lgstaudio-0.10
- nodist_libgst_pack_la_SOURCES += libaudio.c
- CLEANFILES += libaudio.c
- noinst_LIBRARIES += libaudio.a
- libaudio_a_CFLAGS = $(audio_la_CFLAGS)
- libaudio_a_SOURCES=$(audio_la_SOURCES) $(nodist_audio_la_SOURCES)
- audio_la_DEPENDENCIES = $(libgst_pack_lib)
-libaudio.c: libaudio.a
-
-
-endif
-
-if HAVE_GST_VIDEO
- libgst_pack_la_LDFLAGS += -lgstvideo-0.10
- nodist_libgst_pack_la_SOURCES += libvideo.c
- CLEANFILES += libvideo.c
- noinst_LIBRARIES += libvideo.a
- libvideo_a_CFLAGS = $(video_la_CFLAGS)
- libvideo_a_SOURCES=$(video_la_SOURCES) $(nodist_video_la_SOURCES)
- video_la_DEPENDENCIES = $(libgst_pack_lib)
-libvideo.c: libvideo.a
-
-
-endif
-
-if HAVE_GST_TAG
- libgst_pack_la_LDFLAGS += -lgsttag-0.10
- nodist_libgst_pack_la_SOURCES += libtag.c
- CLEANFILES += libtag.c
- noinst_LIBRARIES += libtag.a
- libtag_a_CFLAGS = $(tag_la_CFLAGS)
- libtag_a_SOURCES = $(tag_la_SOURCES) $(nodist_tag_la_SOURCES)
- tag_la_DEPENDENCIES = $(libgst_pack_lib)
-libtag.c: libtag.a
-
-endif
-
-.a.c:
- /bin/sh $(top_srcdir)/codegen/gen_imp_code.sh $< > $<.imp \
- && $(PYTHON) $(top_srcdir)/codegen/gen_gst_import_code.py $<.imp $@ \
- && rm -f $<.imp
-
diff -Nur gst-python-0.10.22_test/Makefile.am gst-python-0.10.22/Makefile.am
--- gst-python-0.10.22_test/Makefile.am 2015-01-19 04:53:18.269354984 +0800
+++ gst-python-0.10.22/Makefile.am 2010-11-20 02:44:51.000000000 +0800
@@ -1,8 +1,8 @@
SUBDIRS = common codegen gst examples plugin testsuite pkgconfig common_cflags = $(PYTHON_INCLUDES) $(PYGOBJECT_CFLAGS) $(GST_CFLAGS) $(GST_OPTION_CFLAGS) -fno-strict-aliasing
-common_libadd =
-common_ldflags = -module -avoid-version -Wl,--rpath,. -L./gst/.libs/ -lgst_pack
+common_libadd = $(GST_LIBS) $(GST_OPTION_LIBS)
+common_ldflags = -module -avoid-version # include before EXTRA_DIST for win32 assignment
include $(top_srcdir)/common/win32.mak
@@ -22,10 +22,6 @@
-export-symbols-regex "^(initgstoption|_PyGObject_API).*"
gstoption_la_SOURCES = gstoptionmodule.c -if HAVE_PYGOBJECT_2_16
-gstoption_la_DEPENDENCIES = gst/libgst_pack.la
-endif
-
EXTRA_DIST = \
gstlibtoolimporter.py \
pygst.py.in \
diff -Nur gst-python-0.10.22_test/win32/common/config.h gst-python-0.10.22/win32/common/config.h
--- gst-python-0.10.22_test/win32/common/config.h 1970-01-01 08:00:00.000000000 +0800
+++ gst-python-0.10.22/win32/common/config.h 2011-10-30 00:06:10.000000000 +0800
@@ -0,0 +1,88 @@
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+/* Defined if gcov is enabled to force a rebuild due to config.h changing */
+#undef GST_GCOV_ENABLED
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* We can use the plugins-install methods */
+#define HAVE_PLUGINS_INSTALL 1
+
+/* Defined if we have a 2.12 series pygobject */
+#undef HAVE_PYGOBJECT_2_12
+
+/* Defined if we have a 2.16 series pygobject */
+#undef HAVE_PYGOBJECT_2_16
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define if valgrind should be used */
+#undef HAVE_VALGRIND
+
+/* We can use the videoorientation interface */
+#define HAVE_VIDEO_ORIENTATION_INTERFACE 1
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
+
+/* Name of package */
+#define PACKAGE "gst-python"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "GStreamer Python Bindings"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "GStreamer Python Bindings 0.10.22"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "gst-python"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "0.10.22"
+
+/* PyGst major version */
+#define PYGST_MAJOR_VERSION 0
+
+/* PyGst micro version */
+#define PYGST_MICRO_VERSION 22
+
+/* PyGst minor version */
+#define PYGST_MINOR_VERSION 10
+
+/* PyGst nano version */
+#define PYGST_NANO_VERSION 0
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#define VERSION "0.10.22"

python2-gst0.10制作静态包的补丁的更多相关文章

  1. python2-gst0.10制作静态包的补丁 v1.1

    gst制作成了静态库,而python2的gst有多个动态库引用gst的库 因此,想了一个办法将python2所需要的gst打包成一个单独的共享库 办法就是,将python2_gst所有的.so先制作成 ...

  2. CentOS下升级python2.7.10过程记录

    1.准备好一份Python2.7.10源码包,下载地址: http://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz 2.安装Python2.7 ...

  3. 编译Python2.7.10

    为了测试 mesos,搞了一个 centos7.1,使用最小化安装,然后自己安装了 net-tools,“开发工具”集.后来想装一下 DCOS Cli工具,结果发现 python 的 pip 不可用. ...

  4. 完美:adobe premiere cs6破解版下载[序列号+汉化包+破解补丁+破解教程]

    原文地址:http://blog.sina.com.cn/s/blog_6306f2c60102f5ub.html 完美:adobe premiere cs6破解版下载,含序列号.汉化包.注册机.破解 ...

  5. 制作自己的rpm包,并为其制作patch包。

    本文分为两个部分,第一部分是制作一个简单的自己的rpm包,并安装运行它.第二部分是为其制作一个patch包,并通过spec配置文件去打补丁,安装.运行打补丁后的程序. 一.安装工具 [yh@local ...

  6. Windows7SP1补丁包(Win7补丁汇总) 32位/64位版 更新截至2016年11月

    Windows7SP1(64位)补丁包(Win7补丁汇总)更新到本月最新.包含Windows7SP1中文版所有重要补丁,可离线安装,适用于Windows 7 SP1 64位 简体中文系统.包含Inte ...

  7. 烂泥:Linux源码包制作RPM包之Apache

    本文由秀依林枫提供友情赞助,首发于烂泥行天下 公司服务器比较多,需要把apache源码包制作成rpm包,然后放到公司内网yum源上进行下载安装.apache的rpm包安装方式比源码安装方式比较快,这能 ...

  8. INNO 补丁制作技术, 打开 INNO 补丁制作方法的第一页

    INNO 补丁制作技术, 打开 INNO 补丁制作方法的第一页 作者:xin 日期:2005-09-23 字体大小: 小 中 大   VPatch 在 INNO 中的应用. VPatch 属于专为NS ...

  9. ubuntu 制作deb 包

    ubuntu下打包制作deb安装包 http://www.th7.cn/system/lin/201406/61012.shtml   2014-06-22 20:16:45CSDN-yangbing ...

随机推荐

  1. Redhat Linux安装JDK 1.7

    本篇主要介绍在Redhat Linux(Red Hat Enterprise Linux Server release 5.7 (Tikanga))系统上安装JDK 1.7,其它Linux平台安装也大 ...

  2. Ant :Property

     Property Ant 内置的Property 系统属性 Ant附加的属性 自定义Property Ant :Property properties是由key-value组成的集合,就是Java中 ...

  3. mysql分表的3种方法

    来源:http://blog.sina.com.cn/s/blog_640738130100tzeq.html 当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死 ...

  4. 使用好压(HaoZip)软件打包EverEdit制作安装程序

    最近使用EverEdit,使用原始的安装程序安装后,需要重新安装插件,对配置文件进行了修改,定制了工具栏.将安装后的程序目录进行打包,制作新的安装包,便于携带. 以下为打包制作过程: 打包原料:Eve ...

  5. zlib压缩一个文件为gzip格式

    网上有很多针对zlib的总结,但是很零散,自己经过总结,实现了用zlib压缩一个文件为gzip格式,似的可以直接使用winr工具解压. 具体方法是使用zlib的deflate系列函数,将buffer压 ...

  6. 基于网格的分割线优化算法(Level Set)

    本文介绍一种网格分割线的优化算法,该方法能够找到网格上更精确.更光滑的分割位置,并且分割线能够自由地合并和分裂,下面介绍算法的具体原理和过程. 曲面上的曲线可以由水平集(level set)形式表示, ...

  7. 苹果iOS强制HTTPS迫在眉睫,距离2017年只剩1天,准备好了么?

    其实不久前苹果就发了通告,要求ios上的应用全部以HTTPS来进行接口调用以及数据访问,这样做是为了数据安全,一方面为了自己,另一方面也是对应用的要求更加严格,这么做很好,也加强了市场app的规范,虽 ...

  8. POJ2677 Tour[DP 状态规定]

    Tour Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4307   Accepted: 1894 Description ...

  9. Google Material Design的图标字体使用教程

    使用教程 1. 打开Material icons下载页 2. 选择要下载的图标 (目前不能多选>_<) 3.选择要下载的格式即可 图标字体使用教程 [方法一] STEP 1: 引入字体文件 ...

  10. C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 远程同步服务器大量基础数据到客户端

    服务器上保存有上万条的基础数据,需要同步到全国各地的成千上万个客户端,而且这些基础数据也经常在有变化调整.这时候需要有一个稳定的数据同步程序,能分批同步基础数据,由于网络流量,网络的稳定性等因素,需要 ...