1. 程式人生 > >從無到有搭建Ubuntu下的編譯環境和製作debian包

從無到有搭建Ubuntu下的編譯環境和製作debian包

1.        環境準備:安裝 gcc, autoconf, automake, libtool, gettext, dh-makedebhelper等包;

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.下載一個

Ubuntuemacs環境LAMP環境配置

1. emacs環境 sudo apt-get install emacs23 2.LAMP環境配置 (1)sudo apt-get install tasksel (2)sudo tasksel install lamp-server 除了第二條命令執行過程中,要

ubuntuspring環境搭建

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

零開始搭建linuxlaravel 5.6環境(一)

yum acad 分享圖片 tps .html 啟動 服務 all 從零開始 首先你需要有一臺linux服務器,或者虛擬機,這裏就不贅述了,不會的可以自行百度。 我這裏準備的是一臺騰訊雲服務器,系統為CentOS 7.4 64位。 你可以使用騰訊雲的登錄按鈕登錄到服務器 也

零開始搭建linuxlaravel 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 。虛擬磁碟檔案

Ubuntucaffe環境搭建的過程及出現的問題

目錄 基於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_