在这篇文章中,我们将带领您了解ubuntu10下编译resin3.1.10的全貌,包括ubuntu编译软件的相关情况。同时,我们还将为您介绍有关CentOS6.3下编译64位hadoop2.7.1、c
在这篇文章中,我们将带领您了解ubuntu 10 下编译 resin 3.1.10的全貌,包括ubuntu 编译软件的相关情况。同时,我们还将为您介绍有关CentOS 6.3 下编译 64 位 hadoop2.7.1、cygwin3 下编译 redis6.2、FFmpeg学习—ubuntu 下编译 Android ffmpeg、install nginx on ubuntu install ubuntu usb install ubuntu 14.04 ubuntu install jd的知识,以帮助您更好地理解这个主题。
本文目录一览:- ubuntu 10 下编译 resin 3.1.10(ubuntu 编译软件)
- CentOS 6.3 下编译 64 位 hadoop2.7.1
- cygwin3 下编译 redis6.2
- FFmpeg学习—ubuntu 下编译 Android ffmpeg
- install nginx on ubuntu install ubuntu usb install ubuntu 14.04 ubuntu install jd
ubuntu 10 下编译 resin 3.1.10(ubuntu 编译软件)
1、为什么要编译resin
编译resin后可以启用JNI库,从而提高性能。什么是JNI,JNI是(Java Native Interface),Java本地或原生接口,使用此接口,可以使用操作系统本地的库以提高性能
2、限制
只能在类Unix系统编译,Windows上是不行的
3、条件
JDK6好象是要安装的,不赘述。
更新编译的包
sudo apt-get update;
sudo apt-get install build-essential;
sudo apt-get install automake;
sudo apt-get install libtool;
下载resin-3.1.10.tar.gz
sudo tar -xvf resin-3.1.10.tar.gz /usr/local/resin
4、编译
cd /usr/local/resin
sudo ./configure
sudo make
sudo make install
OK
原文链接: http://blog.csdn.net/kimsoft/article/details/5813898
CentOS 6.3 下编译 64 位 hadoop2.7.1
yum install svn
yum install autoconf automake libtool cmake
yum intall ncurses-devel
yum install openssl-devel
yum install gcc*
安装 jdk1.7.0_80 并配置环境变量
安装 maven
wget http://mirrors.noc.im/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
并设置环境变量
8. 安装 ant
下载并解压 apache-ant-1.9.6-bin.tar.gz
mv ~/apache-ant-1.9.6 /usr/local
添加环境变量
ANT_HOME=/usr/local/apache-ant-1.9.6
PATH=$PATH:$ANT_HOME/bin
检验是否安装成功
ant –version
9. 安装 protobuf-2.5.0.tar.gz
tar zxvf protobuf-2.5.0.tar.gz
cd protobuf-2.5.0
./configure
make
make check
make install
ls /usr/local/bin
10. 进入 hadoop-2.7.1-src 目录,执行命令:
mvn clean package –Pdist,native –DskipTests –Dtar
或者
mvn package –Pdist,native –DskipTests –Dtar
等待编译结果。(1 小时左右)编译成功。
编译好的文件在./hadoop-dist/target/hadoop-2.7.1.tar.gz
cygwin3 下编译 redis6.2
cygwin 的安装参考前文: https://my.oschina.net/abensky/blog/5386053
cygwin (64 位) 3.3, redis 6.2
编译后的文件放在 https://gitee.com/aben_skys/redis-windows
cygwin 下编译 redis
cd ~
wget -O redis-6.2.6.tar.gz https://download.redis.io/releases/redis-6.2.6.tar.gz
tar -zxvf redis-6.2.6.tar.gz
cd redis-6.2.6
make
编译时出现错误:
debug.c:1753:5: error: unknown type name ‘Dl_info’
1753 | Dl_info info;
| ^~~~~~~
debug.c:1763:13: warning: implicit declaration of function ‘dladdr’; did you mean ‘s_addr’? [-Wimplicit-function-declaration]
1763 | if (dladdr((void*)target, &info) != 0 && info.dli_sname != NULL) {
| ^~~~~~
| s_addr
debug.c:1763:54: error: request for member ‘dli_sname’ in something not a structure or union
1763 | if (dladdr((void*)target, &info) != 0 && info.dli_sname != NULL) {
| ^
debug.c:1765:63: error: request for member ‘dli_sname’ in something not a structure or union
1765 | printf("Function at 0x%lx is %s\n",target,info.dli_sname);
| ^
debug.c: In function ‘dumpCodeAroundEIP’:
debug.c:1774:5: error: unknown type name ‘Dl_info’
1774 | Dl_info info;
| ^~~~~~~
In file included from debug.c:31:
debug.c:1783:17: error: request for member ‘dli_sname’ in something not a structure or union
1783 | info.dli_sname, info.dli_saddr, info.dli_fname, info.dli_fbase,
| ^
server.h:2744:27: note: in definition of macro ‘serverLog’
2744 | _serverLog(level, __VA_ARGS__);\
| ^~~~~~~~~~~
debug.c:1783:33: error: request for member ‘dli_saddr’ in something not a structure or union
1783 | info.dli_sname, info.dli_saddr, info.dli_fname, info.dli_fbase,
| ^
server.h:2744:27: note: in definition of macro ‘serverLog’
2744 | _serverLog(level, __VA_ARGS__);\
| ^~~~~~~~~~~
debug.c:1783:49: error: request for member ‘dli_fname’ in something not a structure or union
1783 | info.dli_sname, info.dli_saddr, info.dli_fname, info.dli_fbase,
| ^
server.h:2744:27: note: in definition of macro ‘serverLog’
2744 | _serverLog(level, __VA_ARGS__);\
| ^~~~~~~~~~~
debug.c:1783:65: error: request for member ‘dli_fbase’ in something not a structure or union
1783 | info.dli_sname, info.dli_saddr, info.dli_fname, info.dli_fbase,
| ^
server.h:2744:27: note: in definition of macro ‘serverLog’
2744 | _serverLog(level, __VA_ARGS__);\
| ^~~~~~~~~~~
debug.c:1784:17: error: request for member ‘dli_saddr’ in something not a structure or union
1784 | info.dli_saddr);
| ^
server.h:2744:27: note: in definition of macro ‘serverLog’
2744 | _serverLog(level, __VA_ARGS__);\
| ^~~~~~~~~~~
debug.c:1785:44: error: request for member ‘dli_saddr’ in something not a structure or union
1785 | size_t len = (long)eip - (long)info.dli_saddr;
| ^
debug.c:1791:38: error: request for member ‘dli_saddr’ in something not a structure or union
1791 | void *base = (void *)info.dli_saddr;
| ^
make[1]: *** [Makefile:374: debug.o] Error 1
make[1]: Leaving directory ''/home/aben/redis-6.2.6/src''
make: *** [Makefile:6: all] Error 2
针对 error: unknown type name ‘Dl_info’
错误,参考: https://github.com/redis/redis/issues/8694 需要修改 src/debug.c
的 void dumpX86Calls
前后的内容 (三处,注意 cygwin修正
注释的地方):
/*cygwin修正: 新增*/
typedef struct Dl_info{
unsigned char *dli_sname;
unsigned char *dli_saddr;
unsigned char *dli_fname;
unsigned char *dli_fbase;
}info;
/* Scans the (assumed) x86 code starting at addr, for a max of `len`
* bytes, searching for E8 (callq) opcodes, and dumping the symbols
* and the call offset if they appear to be valid. */
void dumpX86Calls(void *addr, size_t len) {
size_t j;
unsigned char *p = addr;
/*cygwin修正: Dl_info info 前面要加 struct*/
struct Dl_info info;
/* Hash table to best-effort avoid printing the same symbol
* multiple times. */
unsigned long ht[256] = {0};
if (len < 5) return;
for (j = 0; j < len-4; j++) {
if (p[j] != 0xE8) continue; /* Not an E8 CALL opcode. */
unsigned long target = (unsigned long)addr+j+5;
target += *((int32_t*)(p+j+1));
if (dladdr((void*)target, &info) != 0 && info.dli_sname != NULL) {
if (ht[target&0xff] != target) {
printf("Function at 0x%lx is %s\n",target,info.dli_sname);
ht[target&0xff] = target;
}
j += 4; /* Skip the 32 bit immediate. */
}
}
}
void dumpCodeAroundEIP(void *eip) {
/*cygwin修正: Dl_info info 前面要加 struct*/
struct Dl_info info;
看图:
测试: make test
(此步可以略过)
需要安装 tcl 85.+:
apt-cyg install tcl
. 虽然有几个错误,但是不影响使用
启动:
src/redis-server
客户端 (新开一个 cygwin 命令行):
cd ~
cd redis-6.2.6
src/redis-cli
windows 下执行
我们把编译好的文件放到 c:\lnmp\redis
目录下
1. 从目录 redis-6.2.6
及其下 src
处复制文件
#使用cp+大括号一次性复制多个文件
cp {README.md,redis.conf,sentinel.conf,TLS.md} /cygdrive/c/lnmp/redis/
cp src/{redis-benchmark.exe,redis-check-aof.exe,redis-check-rdb.exe,redis-cli.exe,redis-sentinel.exe,redis-server.exe} /cygdrive/c/lnmp/redis/
2. 复制 cygwin 必须的 dll 文件
cp /cygdrive/c/cygwin64/bin/cygwin1.dll /cygdrive/c/lnmp/redis/
3. 启动命令
此时启动 redis-server
会显示没有找到配置文件,所以我们要在启动时指定配置文件:
#命令行的第一个参数是配置文件
redis-server.exe redis.conf
redis 的 rdb 持久化是默认开启的,但是 save 策略建议手动修改为:
save 900 1
save 300 10
save 60 10000
FFmpeg学习—ubuntu 下编译 Android ffmpeg
1.编译要求
2.编译步凑
sudo apt-get install build-essential git pkg-config yasm
NDK="/home/wh/android-ndk-r12b" SYSROOT=$NDK/platforms/android-9/arch-arm/ TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 function build_one { ./configure --prefix=$PREFIX \ --enable-shared --disable-static \ --disable-doc --disable-ffmpeg \ --disable-ffplay --disable-ffprobe \ --disable-ffserver --disable-avdevice \ --disable-doc --disable-symver \ --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \ --target-os=android --arch=arm --enable-cross-compile \ --sysroot=$SYSROOT --extra-cflags="-Os -fpic $ADDI_CFLAGS" \ --extra-ldflags="$ADDI_LDFLAGS" $ADDITIONAL_CONfigURE_FLAG make clean make -j $(nproc) make install } cpu=arm PREFIX=$(pwd)/android/$cpu ADDI_CFLAGS="-marm" build_one
sudo su会提示你输入密码,输入密码后会获得root权限
sudo bash build.sh编译完成后会在源码目录下面生成一个android 的文件夹,里面就是生成的静态库,如下所示:
install nginx on ubuntu install ubuntu usb install ubuntu 14.04 ubuntu install jd
今天关于ubuntu 10 下编译 resin 3.1.10和ubuntu 编译软件的分享就到这里,希望大家有所收获,若想了解更多关于CentOS 6.3 下编译 64 位 hadoop2.7.1、cygwin3 下编译 redis6.2、FFmpeg学习—ubuntu 下编译 Android ffmpeg、install nginx on ubuntu install ubuntu usb install ubuntu 14.04 ubuntu install jd等相关知识,可以在本站进行查询。
本文标签: