open source
文章平均质量分 69
john_crash
这个作者很懒,什么都没留下…
展开
-
使用 GNU Libtool 创建库
原文介绍在不同的系统中建立动态链接库的方法有很大的差别,这主要是因为每个系统对动态链接库的看法和实现并不相同,以及编译器对动态链接库支持的选项也不太一样。对于开发人员,如果尝试将使用动态库的软件在这些系统之间移植,需要参考枯涩难懂的系统手册,以及修改相应的 Makefile,这一工作是乏味的,并且具有一定的难度。 使用 GNU Libtool 可以容易的在不同的系统中建立动态链接库。它通过一个称为转载 2015-11-24 10:06:25 · 411 阅读 · 0 评论 -
autotool 交叉编译
等待建造。。。原创 2015-11-26 11:47:40 · 868 阅读 · 0 评论 -
autotool,libtool实践二
简单的例子: 我们使用strip.c、procpath.c创建动态库libstrip.dll 然后编译ah.c并连接libstrip.lib产生执行程序ah.exe Makefile.am如下:lib_LTLIBRARIES=libstrip.lalibstrip_la_SOURCES=strip.c procpath.clibstrip_la_LDFLAGS=-no-undefined原创 2015-11-27 11:26:27 · 690 阅读 · 0 评论 -
configure.ac范例一
检查头文件AC_CHECK_HEADERS([headers]) 例如:AC_CHECK_HEADERS([unistd.h windows.h])这个宏将在当前建造环境下检查unistd.h,windows.h是否存在。并将两个参数写入到配置头文件中。一般是config.h,你可以使用AC_CONFIG_HEADERS([headers])来指定。AC_CONFIG_HEADERS([confi原创 2015-11-30 14:27:05 · 7764 阅读 · 0 评论 -
configure.ac范例二
变量在configure.ac,makefile.am,makefile,config.h中怎么传递。 比如你如何更具configure的参数让一部分源代码加入到编译,或者根据不同的cpu或者平台决定哪些代码需要编译哪些不编译。 AM_CONDITIONAL (conditional, condition) 首先开头不是AC而是AM它是一个automake宏。在configure.ac中使用,原创 2015-11-30 15:45:30 · 1335 阅读 · 0 评论 -
MSVC编译参数
msvc的命令行编译链接命令cl.execl命令格式CL [option…] file… [option | file]… [lib…] [@command-file] [/link link-opt…] 选项 用途 option 参数可以使用/或者-,具体含义可以使用/HELP option看到解释。 file 一个或者多个源文件,.obj文件或者。lib文件,CL编译源文件原创 2015-12-01 16:47:32 · 5126 阅读 · 0 评论 -
MSVC链接参数
编译器控制的链接操作编译器CL没有/c选项时自动的调用linker。CL提供了一些参数控制linker。下面列出一些影响链接的CL参数。 CL参数 CL传入LINK的对应参数 不是.c,.cxx,.cpp,.def的文件 这些文件都被传输给link作为输入 filename.def /DEF:filename.def /Fnumber /STACK:number /原创 2015-12-01 17:31:30 · 1195 阅读 · 0 评论 -
USING THE ANDROID TOOLCHAIN AS A STANDALONE COMPILER
It is now possible to use the toolchains provided with the Android NDK as standalone compilers. This can be useful if you already have your own build system, and only need to ability to invoke the cros转载 2015-12-04 09:12:41 · 786 阅读 · 0 评论 -
libtool在产生DLL中遇到的问题
在windows下使用msvc编译时,libtool有可能报告”warning : undefined symbols not allowed in i686-pc-cygwin shared libraries“这使用无libtool缺少参数 -no-undefined参数简单的处理可以修改Makefile文件的编译规则。要加入到LDFLAGS中,例如库libzmq_la_LDFLAGS=-no原创 2015-12-03 11:32:11 · 1963 阅读 · 0 评论 -
libsodium,zeromq编译问题
使用msvc编译libsodium生产DLL需要定义下面的宏。export CPPFLAGS=-DSODIUM_DLL_EXPORT./configure --host=i686_pc_cygwin --enable-shared --disable-static在Makefile中删除-DHAVE_PID=1 删除 -DHAVE_EMMINTRIN_H=1 -DHAVE_TMMINTRIN原创 2015-12-07 15:22:22 · 2973 阅读 · 0 评论 -
怎么在程序内部确定程序自己的绝对路径(windows,linux)
在linux下可以这么实现char * get_process_path( ){ char arg1[20]; char exepath[1024 + 1] = {0}; sprintf( arg1, "/proc/%d/exe", getpid() ); readlink( arg1, exepath, 1024 ); return strdup(exepa原创 2015-11-19 10:55:49 · 398 阅读 · 0 评论 -
autotool编译实践
1.libtool 在windows下编译时不加-no-undefined将不产生动态库。 -avoid-version可以去掉库的版本。2.libtool脚本中max_cmd_len=8192可能会带来问题,当工程比较大文件列表很长超过8192时,在windows下将会出问题,我在编译libsodium时就出现过问题,简单的增加可以解决问题。3.config.sub脚本会检查host,看看是不是原创 2015-11-26 12:06:04 · 823 阅读 · 0 评论 -
Shell脚本调试技术
一. 前言shell编程在unix/linux世界中使用得非常广泛,熟练掌握shell编程也是成为一名优秀的unix/linux开发者和系统管理员的必经之路。脚本调试的主要工作就是发现引发脚本错误的原因以及在脚本源代码中定位发生错误的行,常用的手段包括分析输出的错误信息,通过在脚本中加入调试语句,输出调试信息来辅助诊断错误,利用调试工具等。但与其它高级语言相比,shell解释器缺乏相应的调试机制和调转载 2015-11-23 21:08:31 · 1151 阅读 · 0 评论 -
Autotools使用一
autotools基础一般在linux上编译一个工程需要先调用./configure,大部分linux开源项目都使用autotools编译架构,都会有configure这个脚本。通过在执行./configure,产生Makefile,src/Makefile,config.h,为下一步编译做准备。随后调用make进行编译。一般步骤如下:./configuremakemake checksuP原创 2015-11-17 15:30:43 · 1465 阅读 · 0 评论 -
autotools 使用二
产生configure需要三个文件 configure.ac Makefile.am src/Makefile.am (参考我的另外两篇文章编写configure.ac和编写Makefile.am) 编辑好这几个文件就可以产生configure脚本,和config.h.in,Makefile.in,src/Makefile.in configure.ac主要初始化一些信息,检查编译器,检原创 2015-11-17 16:52:16 · 821 阅读 · 0 评论 -
编写configure.ac
configure.ac由一些宏组成 最基本的组成可以是下面的AC_INIT([PACKAGE], [VERSION], [BUG-REPORT-ADDRESS])# Checks for programs.# Checks for libraries.# Checks for header les.# Checks for typedefs, structures, and compi原创 2015-11-17 17:52:03 · 11675 阅读 · 0 评论 -
调试 configure
当程序不能编译时怎么办通常,在软件包的 README 文件中只能找到非常简单的“编译说明:运行 configure,然后运行 make”。但是,这样行不通时怎么办?在本文中,Peter Seebash 讲述了当自动的配置脚本失效时应该如何去做——以及作为开发者您应如何尽量避免这种错误。毕竟,如果您的程序无法编译,其结果将和您的程序编译后不能运行一样,您的用户会减少。现在许多开放源代码的程序都会附带有转载 2015-11-24 15:17:26 · 438 阅读 · 0 评论 -
调试 make
make 工具如 GNU make、System V make 和 Berkeley make 是用来组织应用程序编译过程的基本工具,但是每个 make 工具之间又有所不同。本文将介绍 makefile 的结构,避免如何在创建 makefile 时出现一些共同的错误,并探索如何修复或解决可移植性问题,还为解决突发的问题提供了一些技巧。大部分 UNIX® 和 Linux® 程序都是通过运行 make转载 2015-11-24 14:42:20 · 580 阅读 · 0 评论 -
编写Makefile.am
Makefile.am将指明工程需要哪些源文件,建造的是什么,如何安装它们。 具体语法如下: option_where_PRIMARY = targets … targets是要建造的目标 PRIMARY可以是下面的一个: 可能值 解释 PROGRAMS 目标是可执行程序 LIBRARIES 目标是静态库 LTLIBRARIES 目标是动态库 HEADERS原创 2015-11-17 22:57:55 · 3895 阅读 · 0 评论 -
autotools例子1
建造中原创 2015-11-17 23:11:40 · 526 阅读 · 1 评论 -
使用 GNU Libtool 创建库
这篇文档向大家介绍 GNU Libtool 的用途及基本使用方法,同时描述如何结合 GNU Autoconf 和 Automake 来使用 Libtool。介绍在不同的系统中建立动态链接库的方法有很大的差别,这主要是因为每个系统对动态链接库的看法和实现并不相同,以及编译器对动态链接库支持的选项也不太一样。对于开发人员,如果尝试将使用动态库的软件在这些系统之间移植,需要参考枯涩难懂的系统手册,以及修改转载 2015-11-25 11:02:04 · 415 阅读 · 0 评论 -
解决NDK编译问题member at n is not an ELF object
当使用ndk-build链接libzmq.a库的时候出现:error: G:\source\cocos2d-x/external/zeromq/prebuilt/android/armeabi/libzmq.a: member at 69836 is not an ELF object问题是因为没有使用ndk带的ar来进行打包。 解决办法先解开全部的.o文件,然后在重新使用ndk带的ar命令进行原创 2015-12-09 11:43:36 · 5230 阅读 · 0 评论