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. Linux命令学习总结:date命令

    命令简介: date 根据给定格式显示日期或设置系统日期时间.print or set the system date and time 指令所在路径:/bin/date 命令语法: date [OP ...

  2. Ignite安装配置——上篇

    Ignite介绍 Ignite 是SolarWinds公司开发的一款数据库性能监控.性能分析并提供优化解决方案的性能检测分析工具,Ignite配置简单.方便:它会收集实时会话数据.服务器资源使用情况, ...

  3. Neo4j图数据库管理系统开发笔记之一:Neo4j Java 工具包

    1 应用开发概述 基于数据传输效率以及接口自定义等特殊性需求,我们暂时放弃使用Neo4j服务器版本,而是在Neo4j嵌入式版本的基础上进行一些封装性的开发.封装的重点,是解决Neo4j嵌入式版本Emb ...

  4. Rebuild Instance 操作详解 - 每天5分钟玩转 OpenStack(37)

    上一节我们讨论了 snapshot,snapshot 的一个重要作用是对 instance 做备份. 如果 instance 损坏了,可以通过 snapshot 恢复,这个恢复的操作就是 Rebuil ...

  5. 【Linux】解决Wesnoth中文乱码问题

    现在使用的系统是Linux Mint 18,安装了Wesnoth,发现打开之后部分中文显示正常,部分中文显示为乱码. 谷歌出的很多办法都只给出了几条指令,但并不具有普适性,我提供一种新的方法,通过修改 ...

  6. php基础教程

    PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言. PHP Hypertext Preprocessor 什么是 PHP 文件? PHP 文件能够包含文本.HTML.CSS 以及 PHP 代 ...

  7. [转]如何在ASP.NET Core中实现一个基础的身份认证

    本文转自:http://www.cnblogs.com/onecodeonescript/p/6015512.html 注:本文提到的代码示例下载地址> How to achieve a bas ...

  8. microstrip patch antenna

    微带天线有很多优点,低成本,易于集成,加工简单,缺点有:效率低.功率容易低.高Q值 ,可能存在表面波,极化效果差,弱电扫性能.带宽窄.微带线的金属厚度t远远小于波长(t << λ0 ,自由 ...

  9. Java程序设计之消费者和生产者

    新建一个Break类,表示食物数量. public class Break { public static final int MAX = 10; //最多一次性煮十个面包 Stack<Inte ...

  10. Unity Mono脚本 加密

    加密环境 引擎版本:Unity3D 5.3.4 及更高版本 (使用Mono而并非IL2CPP) 操作系统:CentOS 6.2(Final) 加密环境:Android.IOS(暂定) 加密对象:C#源 ...