從無到有搭建Ubuntu下的編譯環境和製作debian包
1. 環境準備:安裝 gcc, autoconf, automake, libtool, gettext, dh-make和debhelper等包;
2. 在/home/workroom/test目錄下寫一個簡單的測試程式test.c:
#include <stdio.h>
void main()
{
printf("Hello world!\r\n");
}
3. 在/home/workroom/test目錄下執行 autoscan產生基本的 configure.scan檔案,開啟該檔案,並新增紅色的幾行,然後另存為configure.ac
# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.68]) AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS]) AC_CONFIG_SRCDIR([test.c]) AM_INIT_AUTOMAKE([-Wall -Werror foreign]) AC_CONFIG_HEADERS([config.h]) # Checks for programs. AC_PROG_CC # Checks for libraries. # Checks for header files. # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. AC_CONFIG_FILES([ Makefile ]) AC_OUTPUT |
4. 手工生成一個autogen.sh檔案,內容如下:
#! /bin/sh # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # Regenerate the files autoconf / automake rm -f configure rm -f config.cache rm -f config.log aclocal -I . autoheader autoconf automake -a -c |
5. 手工生成Makefile.am
sbin_PROGRAMS=testapp testapp_SOURCES= test.c |
6. 執行./autogen.sh生成configure檔案
7. 執行./configure生成Makefile檔案
8. 執行 make編譯
[email protected]:/home/workroom/test#make
至此,第一階段程式的自動編譯環境已經完成,可以看到在當前目錄下已經生成了 testapp可執行程式。執行 ./testapp會輸出“Hello world!”
下面繼續完成將當前程式打成deb包。
9. 在當前目錄下新建一個 debian目錄,並進入該目錄建立 control, rules, changlog,copyright,compat等幾個必要的檔案:
[email protected]:/home/workroom/test# mkdir debian
[email protected]:/home/workroom/test# cd debian
[email protected]:/home/workroom/test# touch control
輸入內容:
Source: testapp Section: unknown Priority: extra Maintainer: aaa Build-Depends: debhelper (>= 8.0.0), autotools-dev Standards-Version: 3.9.2 Homepage: http://www.test.com Package: testapp Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: testapp testapp |
[email protected]:/home/workroom/test# touch copyright
輸入內容:
Format: http://dep.debian.net/deps/dep5 Upstream-Name: testapp Source: <url://example.com> Files: * Copyright: <years> <put author's name and email here> <years> <likewise for another author> License: <special license> <Put the license of the package here indented by 1 space> <This follows the format of Description: lines in control file> . <Including paragraphs> |
[email protected]:/home/workroom/test# touch changelog
輸入內容:
testapp (1.0.0-1) stable; urgency=low * Initial release (Closes: #nnnn) <nnnn is the bug number of your ITP> -- aaa <[email protected]> Thu, 28 Jun 2012 13:27:14 +0800 |
[email protected]:/home/workroom/test# touch compat
輸入內容:
8 |
[email protected]:/home/workroom/test# touch rules
輸入內容:
#!/usr/bin/make -f # testApp debian/rules using debhelper # Copyright (C) 2012 aaa <[email protected]> CXXFLAGS += -g -O2 CFLAGS += -g -O2 build-arch: build build-indep: build build: build-stamp build-stamp: build-test-stamp touch build-stamp build-test-stamp: mkdir build_test ls |grep -v debian|grep -v build_test|xargs -i cp -r {} build_test/ cd build_test && ./autogen.sh && ./configure $(MAKE) -C build_test touch build-test-stamp clean: clean-patched clean-patched: dh_testdir dh_testroot [ ! -d $(CURDIR)/build_test ] || rm -rf $(CURDIR)/build_test dh_clean install: install-stamp install-stamp: build-stamp dh_testdir dh_testroot dh_prep dh_installdirs $(MAKE) -C $(CURDIR)/build_test install DESTDIR=$(CURDIR)/debian/tmp dh_install --sourcedir=debian/tmp touch install-stamp binary-arch: build install dh_testdir dh_testroot dh_install --list-missing dh_installchangelogs dh_installdocs dh_installexamples dh_installman dh_python2 --no-guessing-versions dh_link dh_strip dh_compress dh_fixperms dh_makeshlibs dh_installdeb dh_shlibdeps dh_gencontrol dh_md5sums dh_builddeb # Build architecture-independent files here. binary-indep: build install # We have nothing to do by default. binary: binary-indep binary-arch .PHONY: build clean binary-indep binary-arch binary install |
10. 因為我們編譯出來的程式名叫 testapp,為了把它做進deb包,還需要建立一個testapp.install檔案:
[email protected]:/home/workroom/test# touch testapp.install
/usr/local/bin/testapp |
至此,為製作deb包的所有環節已經準備好,在當前目錄下執行:
[email protected]:/home/workroom/test# ./debian/rules binary
12. 用dpkg -i命令安裝這個deb:
[email protected]:/home/workroom#dpkg –i testapp_1.0.0-1.i386.deb
安裝完後執行 testapp:
[email protected]:/home/workroom# testapp
Hello world!
以上從無到有,介紹了在linux Ubuntu下基本的編譯環境和debian包生成的基本步驟和框架,當然如果工程複雜的話,需要在上述步驟中新增相應的依賴包等,但總體的框架和步驟是一樣的,更詳細的說明可以參考:http://www.debian.org/doc/manuals/maint-guide/index.en.html
相關推薦
從無到有搭建Ubuntu下的編譯環境和製作debian包
1. 環境準備:安裝 gcc, autoconf, automake, libtool, gettext, dh-make和debhelper等包; 2. 在/home/workroom/test目錄下寫一個簡單的測試程式test.c: #i
測試環境搭建和部署(在Linux環境下搭建jdk+Tomcat+mysql環境和項目包的部署)
pri 環境 安裝包 mysq 自己 進行 配置jdk linu 連接數 1.Linux環境(我搭建的是64位centos版本的linux系統) 1.下載並安裝一個VMware Workstation虛擬機,是搭建Linux系統的平臺。 2.下載一個
Ubuntu下emacs環境和LAMP環境配置
1. emacs環境 sudo apt-get install emacs23 2.LAMP環境配置 (1)sudo apt-get install tasksel (2)sudo tasksel install lamp-server 除了第二條命令執行過程中,要
ubuntu下spring環境搭建
ext targe out 插件 fontsize article ase tex get 一.安裝JDK 下載官網:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-21331
【Android】Ubuntu 16.04搭建Android開發編譯環境
jdk8 per 參考 prot google官網 markdown ins 由於 log 一. 通用Android環境和工具配置 1. 系統更新升級 sudo apt-get update sudo apt-get upgrade 2. 配置ntlmaps代理上網環境
golang Linux下編譯環境搭建
可執行文件 ash -s lib 運行 sta 目錄 bin 編譯環境搭建 1、下載golang1.4和1.10源碼(1.4以後的版本都用1.4go編譯安裝,所以先安裝1.4) 2、解壓後我的目錄結構是: /opt/xxx/golang |-------gopa
從零開始搭建linux下laravel 5.6環境(一)
yum acad 分享圖片 tps .html 啟動 服務 all 從零開始 首先你需要有一臺linux服務器,或者虛擬機,這裏就不贅述了,不會的可以自行百度。 我這裏準備的是一臺騰訊雲服務器,系統為CentOS 7.4 64位。 你可以使用騰訊雲的登錄按鈕登錄到服務器 也
從零開始搭建linux下laravel 5.5所需環境(三)
一個 技術 useradd color ram end php localhost aca 好的,我們已經安裝好了nginx+mysql+php了,打開[ Laravel 5.5 文檔 ] 快速入門 —— 安裝配置篇 我們看到這裏需要安裝Composer,好的,我們現在就
Linux下搭建arm交叉編譯環境
首先需要在網上搜索arm-linux-gcc-4.3.2.tgz 傳到Linux下,執行tar xzvf arm-linux-gcc-4.3.2.tgz -C/ 解壓到根目錄下(目錄結構/usr/local/arm/4.3.2) 這樣,編譯器就解壓到了Linux系統中 然後建立
從原始碼搭建etherum,solidity編譯環境
使用ubuntu1804(由ubuntu-18.04.1-server-amd64.iso安裝)環境 1, 安裝go mkdir -p /home/001_code/001_golang/ cd /home/001_code/001_golang/ wget https:
如何在linux下搭建mips交叉編譯環境
【參考原文】http://blog.csdn.net/gubenpeiyuan/article/details/7895469 由於要在本地編譯程式,在嵌入式系統上執行,因此需要在本地裝編譯器,目前主要需要mipsel-linux-gcc。之前一直以為可以用apt-get
搭建輕量級C++編譯環境——eclipse下的c/c++環境搭建(minGW+gdt離線安裝)
最近入手小米Air12.5,面對寸G寸金的128G固態,為了方便刷LeetCode,我需要一個儘量小體積的C/C++編譯環境。 Eclipse+CDT外掛+MinGW是一個不錯的解決方案,如果從官網下載minGW安裝包,基本就是一鍵傻瓜式安裝,優點是安裝十分簡
Mac OS X下搭建Android Source編譯環境的問題及解決方法
[轉發請註明出處,謝謝] 本文的編譯環境指的是Android Kernel,Framework的編譯,不是Application的開發環境。 有詳細說明的只給出連結和要點提示。 大的步驟就是Android的source網站的原文 “Initializing a Buil
CentOS6.8下安裝使用Eclipse搭建C/C++編譯環境
參考了文章: http://blog.csdn.net/srw11/article/details/7513624 可能我在VMware虛擬機器上是簡易快速安裝的CentOS6.8系統,所以裡面沒有eclipse,我見他人安裝的系統是有程式設計工具的。而這文章提到Ubun
最新的IOS在windows環境下編譯環境搭建記錄
Objective-C是蘋果軟體的程式語言,想要上機學習、除錯,有一個整合開發環境(IDE)方便很多。有三類方法搭建Objective-C的整合開發環境: 1) 使用蘋果的平臺,整合開發環境使用Xcode。但如果沒有蘋果平臺,想在Windows環境下學習Objectiv
64位Ubuntu 16.04搭建嵌入式交叉編譯環境arm-linux-gcc過程圖解
64位Ubuntu 16.04搭建嵌入式交叉編譯環境arm-linux-gcc過程圖解,開發裸機環境之前需要先搭建其開發環境,畢竟工欲善其事必先利其器嘛。 安裝步驟 1、準備工具安裝目錄 將壓縮包arm-Linux-gcc-4.4.3.tar.gz存放在
虛擬機器中在Ubuntu14.04下搭建QT交叉編譯環境--2014/8/14
一、Ubuntu安裝及配置 在windows上下載VMware10.0.2 並安裝,在網上找永久金鑰啟用。開啟後是中文版 在Ubuntu官網上下載ubuntu-14.04.1-desktop-i386 開啟虛擬機器,並建立新的虛擬機器,記憶體1g,硬碟20g 。虛擬磁碟檔案
Ubuntu下caffe環境搭建的過程及出現的問題
目錄 基於ubuntu14.04安裝CPU版的caffe 1. 切換root許可權 2. 安裝開發依賴的包 3. 安裝加速CPU計算的數學依賴庫 4. 安裝ubuntu14.04特定的依賴 5. 安裝OpenCV開源庫
Ubuntu 16.04.1 安裝後搭建ARM交叉編譯環境編譯pjsip
1.解除安裝沒有用的軟體 sudo apt-get purge libreoffice? sudo apt-get remove vim-? sudo apt-get update sudo apt-get install vim-common
【以太坊系列-004】從原始碼搭建etherum,solidity編譯環境
使用ubuntu1804(由ubuntu-18.04.1-server-amd64.iso安裝)環境 說明: 本文主要介紹基於ubuntu1804的環境,由原始碼構建etherum,以及solidity的編譯環境。 1, 安裝go mkdir -p /home/001_