|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2017/8/13 19:20:42 |
标题: |
|
加入我的收藏 |
楼主: |
为防止在15日(星期二)晚讲课演砸,昨天用虚拟机把Linux开发环境涉及的软件重新编译安装了一遍,熬个通宵直到凌晨4点结束。今天再把流程记录到微信公众号中,我想对初学者应该很有帮助。
想当年我开始琢磨Linux的时候,从一个小白到现在能在Linux上给客户开发应用,也是熬过无数个不眠之夜。没有办法,谁让我们程序员就是喜欢折腾呢!
一、替换CentOS内核 CentOS稳定性很好,但是有个大缺点,就是内核更新太慢了。现在最新的kernel已经到v4.12.6了,但是CentOS官方放出来的还是v3.10,对于一个爱折腾的程序员来说,简直是难以忍受!
要替换内核的第一步,就是把gcc先升级。 第一步:gcc的源码可以从http://gcc.gnu.org下载。下载后解压缩到home目录,解压命令:tar -xvf gcc-7.1.0.tar.bz2;
第二步:进入目录 gcc-7.1.0,执行contrib/download_prerequisites,下载必要的第三方支持源码。在国内下载的时候可能会有问题,反正就是不知道哪个可能就被墙了,东西都不大,要有翻墙能力建议翻墙后执行此命令;
第三步:执行配置生成Makefile,./configure --prefix=/usr --disable-multilib --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++ --enable-plugin --enable-initfini-array --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux 这个配置可以自己琢磨增加或删除什么,./configure --help可以看所有选项;
第四步:执行编译,make。如果你的机器有好多个cpu,可以用make -j2表示用两个cpu同时执行编译,会加快速度;
第五步:安装,sudo make install。前面增加sudo就是标明需要管理员权限。会安装在--prefix指定的目录中。
从源码编译生成新的gcc是不是很简单?如果编译过程中遇到问题不要着急,先问度娘,最后祭出翻墙问谷哥。世界上有很多热心的程序员,总有人会解决你遇到的问题。但是我也建议大家方向一定要把握对,要走人多的地方,要不你落单了就有可能每人来救你哦!
gcc安装完成后,可以执行gcc -v检查下版本。
OK,gcc已经是最新v7.1了!
接下来到http://www.kernel.org下载核心代码,这个网站可是Linux老师的窝,没事干的时候,我经常去逛逛,以拉近和大神之间的距离。现在最新稳定版是v4.12.6。 国内不好下载,我下了一个kernel4.12.7 第一步:下载源码并解压到home目录;
第二步:拷贝.config到该源码目录里。.config在你第一次安装Linux的时候,由安装程序自动生成,记录你的硬件配置和软件选项等。可以在boot目录中找到。
上面那个应该是最新的配置。拷贝到源码目录并改名称为.config。
第三步:make oldconfig。因为每个新版的核心会增加很多选项,这个命令就是把新的参数缺省值写到.config文件中;
第四步:如果大家还想手工配置参数,可以运行make menuconfig。我不喜欢IPv6,因此经常进去把IPv6 disable了;
第五步:make -j2
第六步:生成启动image并安装,sudo make modules_install install;
第七步:设置缺省启动项,sudo grub2-set-default "CentOS Linux (4.12.6) 7 (Core)";
第八步:reboot。
成功更新内核!
二、编译fpc和lazarus 由于fpc只能用pascal编译,因此需要安装个初始的编译器。可以访问http://www.freepascal.org的下载专区。
第一步:下载v3.0.2 for Linux的二进制文件: fpc-3.0.2-1.x86_64.rpm;
第二步:svn checkout http://svn.freepascal.org/svn/fpc/trunk fpc;
第三部:cd fpc
第四步:make all
第五步:sudo make install INSTALL_PREFIX=/usr
第六步:千万不要以为安装好就OK,缺省安装在/usr/lib/fpc/3.1.1,需要移到/usr/lib64/fpc/3.1.1下。因此请接着执行: sudo mv /usr/lib/fpc/3.1.1 /usr/lib64/fpc/3.1.1 sudo ln -s /usr/bin/ppcx64 /usr/lib64/fpc/3.1.1/ppcx64
接下来就可以编译lazarus了,这个开发工具采用gtk-2做界面。 第一步:svn co https://svn.freepascal.org/svn/lazarus/trunk lazarus
第二步:make bigide
第三步:ln -s ~/lazarus/lazarus ~/桌面/lazarus
在Linux中经常用建立软链命令,不懂软链接是什么的可以问下度娘。 至此开发工具已经建立好,你可以试试开个一个简单的Hello world控制台程序,操作跟Delphi差不多,我就不多说了。
三、数据库postgresql 这个是我最喜爱的开源数据库,因此如果是给客户开发应用,我绝对首选这个,客户要是坚持用其他的数据库,那我就告诉他,对不起这个项目我就不接啦😂 ,顿时感觉自己很牛逼的感觉,能给客户做最后的通牒。
第一步:访问http://www.postgresql.org下载源码;
第二步:tar xvf postgresql-9.6.4.tar.bz2
第三步:cd postgresql-9.6.4
第四步:./configure --prefix=/usr/local/pgsql
第五步:make
第六步:sudo make install
数据库安装完成,但是还没有在后台运行。首先要创建数据库存放目录。 第一步:sudo mkdir /usr/local/pgdata
第二步:sudo chown postgres /usr/local/pgdata
第三步:/usr/local/pgsql/bin/initdb -D /usr/local/pgdata -E UTF8 --locale=zh_CN.UTF-8 -U admin -W
第四步:在contrib/start-scripts/linux有个启动脚本,拷贝到/etc/init.d,改名称pgsql,用vi打开看看有什么需要改动的地方。顺便说下,vi是必须要学会的工具,不会这个工具,都不好意思说自己搞开源的;
第五步:sudo chkconfig --add pgsql,设置开机启动。
启动如果有错,大家可以到pgdata下面有个serverlog,看下是什么错误再去解决。一般postgresql是运行在5432端口,大家觉得不爽可以改。
四、编译nginx和php 大家是不是觉得编译很简单?三步曲:configure, make, make install。 第一步:访问http://www.nginx.org下载最新源码;
第二步:解压源码;
第三部:./configure --prefix=/usr/local/nginx --with-pcre,如果需要https,需要加上参数 --with-http-ssl-module;
第四步:make
第五步:sudo make install
php编译稍微复杂点,因为要用到的模块可能会多点。有些人要图形的,还有人可能要访问数据库的。那么就要在configure加不同的参数。比如如果网站需要验证码,那gd库少不了。curl库可以用来获取其他网站的内容。建议这两个都装。
第一步:安装curl和gd,大家可以百度找下;
第二步:访问http://www.php.net下载源码;
第三步:./configure --prefix=/usr/local/php --with-openssl --with-pdo-pgsql=/usr/local/pgsql --with-pgsql=/usr/local/pgsql --with-webp-dir=/usr/lib64 --with-config-file-path=/usr/local/php --enable-fpm --with-fpm-user=51pas --with-xpm-dir=/usr/lib64 --enable-mbstring --enable-opcache=no
第四步:make
第五步:sudo make install
nginx是通过php-fpm来和php协同工作的,因此需要配置 /usr/local/nginx/conf/nginx.conf。在server block中配置如下信息: location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params;
这样遇到.php的网页请求,就会自动转发到后台由php-fpm进行处理。
针对nginx和php-fpm的开机自启动也需要在/etc/init.d中增加脚本。缺省php-fpm listen端口为9000。
五、安装firebird 说到firebird,也是满眼的泪水。在utf-8格式下的汉字按中文拼音排序,折腾了很久。编译firebird好麻烦,要很纯洁的系统,因此我就用已经准备好的二进制安装。直接下载http://www.51pas.com/firebird3.tar.bz2解压到/usr/local下。
完成后需要在/etc/profile.d下增加个脚本,让搜索到相关库。 export LD_LIBRARY_PATH=/usr/lib64:/usr/local/firebird/lib
编译好以上的环境是拥抱开源的第一步,希望能够帮助到大家。
下周二(8月15日)在微信群中解答大家遇到的问题,想进群的朋友可以扫下面二维码,若人数超了可以联系微信号christopherli拉你进群:
----------------------------------------------
欢迎加入PAS社区www.51pas.com,从开源获得力量! |
作者: |
|
2017/8/13 20:16:23 |
1楼: |
有心啦,楼主,加油!!!
----------------------------------------------
-
|
作者: |
|
2017/8/13 20:27:23 |
2楼: |
二、编译fpc和lazarus
也就是说,经过这些步骤的编译,可以得到一份自己的FPC和LAZARUS了?这么容易?
----------------------------------------------
只有偏执狂才能生存!
|
作者: |
|
2017/8/13 21:15:08 |
3楼: |
是的,现在的开源就是这么玩的。但是需要看清授权,是不是能商用?改完的源码是否需要公开等条款。
----------------------------------------------
欢迎加入PAS社区www.51pas.com,从开源获得力量!
|
作者: |
hbug (hbug) |
★☆☆☆☆ |
-
|
普通会员 |
|
2017/8/13 23:05:02 |
4楼: |
这个顶下,虽然目前用不上。
----------------------------------------------
专业提供人力资源软件、指纹考勤软件、POS进销存软件、酒店餐饮软件 http://www.winsoftcn.com
|
作者: |
|
2017/8/14 16:01:16 |
5楼: |
这个顶下,虽然目前用不上。
----------------------------------------------
-
|
|