锘??xml version="1.0" encoding="utf-8" standalone="yes"?>999久久久免费精品国产,婷婷伊人久久大香线蕉AV,午夜精品久久影院蜜桃http://www.shnenglu.com/lk624424108/category/18372.htmlzh-cnSat, 24 Dec 2011 01:38:36 GMTSat, 24 Dec 2011 01:38:36 GMT60Makefile Libtool Automakehttp://www.shnenglu.com/lk624424108/articles/162427.htmllikunlikunMon, 19 Dec 2011 14:47:00 GMThttp://www.shnenglu.com/lk624424108/articles/162427.htmlhttp://www.shnenglu.com/lk624424108/comments/162427.htmlhttp://www.shnenglu.com/lk624424108/articles/162427.html#Feedback0http://www.shnenglu.com/lk624424108/comments/commentRss/162427.htmlhttp://www.shnenglu.com/lk624424108/services/trackbacks/162427.html

鐢╝utomake寤虹珛鍏變韓搴?鍔ㄦ侀摼鎺ュ簱)Makefile

瑕佷嬌鐢╝utomake宸ュ叿鍖呭緩绔嬩竴涓氦鍙夌紪璇戠殑鍏變韓搴撶殑Makefile

榪欓噷鐢ㄧ殑autoconf鏄?.67鐗堟湰錛屽湪debian涓嬪疄鐜?

濡傛灉鐗堟湰浣庯紝鍙互鐢╝pt-get install automake鏉ヨ鏈鏂扮殑鐗堟湰錛岃繕闇瑕乴ibtool,涔熼渶瑕佺敤apt-get install鏉ュ畨瑁呫?/p>

榪欓噷寤虹珛涓涓畝鍗曠殑鍑芥暟搴撴潵浠嬬粛錛?/p>

寤虹珛鐩綍rx,鍙婃簮鐮佺洰褰晄rc:

$mkdir rx
$mkdir rx/src

鍦╮x/src涓嬬紪杈憆x.c,rx.h涓や釜婧愭枃浠?

mybdebian:/home/myb/php/rx/src# cat rx.h
#ifndef __RX_H_
#define __RX_H_
int fun
();
#endif
mybdebian:
/home/myb/php/rx/src# cat rx.c
#include "rx.h"
int fun
()
{
return 1234;
}

鍦╮x鐩綍鍜宺x/src鐩綍涓嬪垎鍒緩绔婱akefile.am鏂囦歡

rx鐩綍涓嬬殑Makefile.am涓洪《灞侻akefile.am鏂囦歡錛屽彧瑕佸寘鍚叾瀛樻斁婧愮爜鐨勫瓙鐩綍鍗沖彲錛屽唴瀹瑰涓嬶細

AUTOMAKE_OPTIONS=foreign
SUBDIRS
=src

rx/src鐩綍涓嬬殑Makefile.am鍐呭濡備笅錛?/p>

AUTOMAKE_OPTIONS=foreign
lib_LTLIBRARIES
=librx.la
librx_la_SOURCES
=rx.c
include_HEADERS=rx.h

鍏朵腑lib_LTLIBRARIES=鍚庨潰鐨?#8220;librx.la”涓鴻鐢熸垚鐨勫簱鏂囦歡鍚?蹇呴』鍐欐垚.la錛屼笉鑳芥槸.so錛屽疄闄呬細鐢熸垚librx.so鏂囦歡銆?/p>

涓嬮潰鐨刲ibrx_la鏄痩ibrx.la鎶?#8220;.”鎹㈡垚涓嬪垝綰?#8220;_”鍚庨潰鍔犱笂“_SOURCES=”錛岀瓑鍙蜂互鍚庝負婧愭枃浠跺悕縐幫紝澶氫簬涓涓椂鐢ㄧ┖鏍奸殧寮銆?/p>

include_HEADERS=鍚庨潰鐨勪負澶存枃浠訛紝鏄緵鍏跺畠紼嬪簭鍖呭惈鐢ㄧ殑錛宮ake install鏃朵細澶嶅埗鍒板畨瑁呯洰褰曠殑include 鐩綍涓?/p>

鍥炲埌涓婂眰鐩綍錛屼嬌鐢╝utoscan鎵弿婧愮爜鐩綍:

$autoscan
$ls
autoscan.log configure.scan Makefile.am src

鎶奵onfigure.scan鏀瑰悕鎴愪負configure.ac

$mv configure.scan configure.ac
AC_OUTPUT([Makefile
src
/Makefile])

緙栬瘧榪欎釜鏂囦歡:

$vim configure.ac
# -*- Autoconf -*-
#
Process this file with autoconf to produce a configure script.

AC_PREREQ([
2.67])
AC_INIT([FULL
-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_CONFIG_SRCDIR([src
/rx.c])
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
src
/Makefile])
AC_OUTPUT

淇敼AC_INIT涓鍙ワ紝鍗蟲妸鍖呯殑鍏ㄥ悕銆佺増鏈彿鍙夿UG鎶ュ憡email鍦板潃娣諱笂錛屽錛?/p>

AC_INIT(rx2dlib,0.01,resound@163.com)

鍦ㄥ畠鍚庨潰鍔犱竴鍙?

AM_INIT_AUTOMAKE

榪欏彞璇濇槸蹇呴』鐨勩?/p>

鐢變簬榪欎釜鑴氭湰鏄敤浜庣敓鎴愬叡浜簱鐨勶紝鎵浠ヨ鍔犱竴鍙C_PROG_LIBTOOL鍦ˋC_PROG_CC鐨勪笅涓琛岋細

# Checks for programs.
AC_PROG_CC
AC_PROG_LIBTOOL

淇敼鍚庨潰鐨勯偅涓狝C_CONFIG_FILES璇彞錛屾敼鎴怉C_OUTPUT,騫舵妸鍚庨潰鐨勪竴鏉C_OUTPUT鍘繪帀錛?/p>

AC_OUTPUT([Makefile
src
/Makefile])

榪欐牱錛宑onfigure.ac灝卞緩濂戒簡錛屼慨鏀瑰悗鐨勫唴瀹瑰涓?

# -*- Autoconf -*-
#
Process this file with autoconf to produce a configure script.

AC_PREREQ([
2.67])
AC_INIT(rx2dlib,
0.01,resound@163.com)
AM_INIT_AUTOMAKE

AC_CONFIG_SRCDIR([src
/rx.c])
AC_CONFIG_HEADERS([config.h])

# Checks for programs.
AC_PROG_CC
AC_PROG_LIBTOOL

# Checks for libraries.

# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

AC_OUTPUT([Makefile
src
/Makefile])

鐒跺悗鎸夐『搴忔墽琛?

$aclocal
$autoconf
$autoheader
$libtoolize --automake
$automake –-add-missing
configure
.ac:13: installing `./config.guess'
configure
.ac:13: installing `./config.sub'
configure
.ac:6: installing `./install-sh'
configure
.ac:6: installing `./missing'
src
/Makefile.am: installing `./depcomp'

榪欐椂configure鑴氭湰宸茬粡鐢熸垚浜嗐?/p>

鍙互鐢ㄥ畠鏉ラ厤緗敓鎴怣akefile浜嗐?/p>

濡傛垜浠鐢熸垚浜ゅ弶緙栬瘧緇橝RM CPU浣跨敤鐨勫叡浜簱,榪欓噷鍋囪鎴戜滑瑕佷嬌鐢ㄧ殑緙栬瘧鍣ㄤ負arm-none-linux-gnueabi-gcc錛屽茍涓旀垜浠渶緇堝湪ARM鏉夸笂鎵ц鏃訛紝瑕佹妸搴撳畨瑁呭埌鐩爣鏉跨殑/usr/local/armrx2d鐩綍涓幓銆傚彲浠ヨ繖鏍烽厤緗?

$./configure --host=arm-none-linux-gnueabi --prefix=/usr/local/armrx2d

$make


Make瀹屾垚鍚庡彲浠ュ埌src鐩綍涓嬮潰鐨勪竴涓殣钘忕洰褰?libs鐩綍涓湅鍒扮敓鎴愮殑搴撴枃浠訛細

mybdebian:/home/myb/php/rx/src/.libs# ls -l
鎬昏
20
-rw-r--r--
1 root root 2368 04-19 22:48 librx.a
lrwxrwxrwx
1 root root 11 04-19 22:48 librx.la -> ../librx.la
-rw-r--r--
1 root root 930 04-19 22:48 librx.lai
lrwxrwxrwx
1 root root 14 04-19 22:48 librx.so -> librx.so.0.0.0
lrwxrwxrwx
1 root root 14 04-19 22:48 librx.so.0 -> librx.so.0.0.0
-rwxr-xr-x
1 root root 5422 04-19 22:48 librx.so.0.0.0
-rw-r--r--
1 root root 2228 04-19 22:48 rx.o

鎴戜滑鍐嶅洖鍒伴《灞傜洰褰曪紝鎵цmake install鍙互鑷姩瀹夎鐢熸垚鐨勫簱鍒?usr/local/armrx2d/lib鐩綍涓嬨?/p>

鑻ヤ嬌鐢╝utomake鏃跺嚭鐜頒笅闈㈤敊璇俊鎭?/p>

required file `./ltmain.sh' not found

鏄洜涓簂ibtool鏈厤緗細

瑙e喅鍔炴硶錛?/p>

$libtoolize --automake --debug --copy –force

鎴栵細

$libtoolize --automake

#
#
# 鍒╃敤libtool鑷姩鐢熸垚鍔ㄦ佸簱
#
1. autoscan鍛戒護鍦ㄥ綋鍓嶇洰褰曠敓鎴恈onfigure.scan鏂囦歡, 鍐呭涓?
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.57)
AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
AC_CONFIG_SRCDIR([src/bot.h])
AC_CONFIG_HEADER([config.h])
# Checks for programs.
AC_PROG_CXX
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([limits.h malloc.h stdlib.h string.h unistd.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_HEADER_STDBOOL
AC_C_CONST
AC_C_INLINE
# Checks for library functions.
AC_FUNC_MALLOC
AC_FUNC_REALLOC
AC_CHECK_FUNCS([memset strcasecmp strchr strdup])
AC_OUTPUT
灝嗗叾璇ュ悕涓篶onfigure.ac 鐒跺悗淇敼:
configure.ac 鏂囦歡鏄?autoconf 鐨勮緭鍏ユ枃浠訛紝緇忚繃 autoconf 澶勭悊錛屽睍寮閲岄潰鐨?m4瀹忥紝
杈撳嚭鐨勬槸 configure 鑴氭湰銆?/span>
絎?4 琛屽0鏄庢湰鏂囦歡瑕佹眰鐨?autoconf 鐗堟湰錛屽洜涓烘湰渚嬩嬌鐢ㄤ簡鏂扮増鏈?2.57錛屾墍浠ュ湪姝ゆ敞鏄庛?/span>
絎?5 琛?AC_INIT 瀹忕敤鏉ュ畾涔夎蔣浠剁殑鍚嶇О鍜岀増鏈瓑淇℃伅
AC_INIT([test], 1.0, [email]linhanzu@gmail.com[/email])
澧炲姞鐗堟湰淇℃伅(涓虹敓鎴恖ib搴撳仛鍑嗗)
lt_major=1
lt_age=1
lt_revision=12
dist_version=0.1.12
AM_INIT_AUTOMAKE(test, $dist_version) //鑷姩鐢熸垚Makefile鏂囦歡
澧炲姞瀹? 鎵撳紑鍏變韓搴?/span>
AC_PROG_LIBTOOL
# Check for dl  
DL_PRESENT=""
AC_CHECK_LIB( dl, dlopen, DL_PRESENT="yes",, $DL_LIBS -ldl )
if test "x$DL_PRESENT" = "xyes"; then
AC_DEFINE(HAVE_LIBDL, 1, [Define if DL lib is present])
DL_LIBS="-ldl"
AC_SUBST(DL_LIBS)
fi
# Check for libm
M_PRESENT=""
AC_CHECK_LIB( m, sin, M_PRESENT="yes",, $M_LIBS -lm )
if test "x$M_PRESENT" = "xyes"; then
AC_DEFINE(HAVE_LIBM, 1, [Define if libm is present])
M_LIBS="-lm"
AC_SUBST(M_LIBS)
fi
澧炲姞渚濊禆搴擄紝榪欓噷灝變粎浠呭垪涓句簡pthread搴擄紝鐢熸垚鐨凪akefile浼氳嚜鍔ㄥ姞涓?pthread
# Check for pthread
PTHREAD_PRESENT=""
AC_CHECK_LIB( pthread, pthread_create, PTHREAD_PRESENT="yes",, $PTHREAD_LIBS
-lpthread )
if test "x$PTHREAD_PRESENT" = "xyes"; then
AC_DEFINE(HAVE_LIBPTHREAD, 1, [Define if libpthread is present])
PTHREAD_LIBS="-lpthread"
AC_SUBST(PTHREAD_LIBS)
fi
瑕佺敓鎴愰」鐩伐紼嬬洰褰曞拰鍏跺畠鐩綍涓嬬殑Makefile 鏂囦歡, 蹇呴渶鍔犲叆
AM_CONFIG_FILES鐨勫畯:
渚嬪: AC_CONFIG_FILES([Makefile
                     src/Makefile
                     data/Makefile
                     docs/Makefile])
淇敼瀹屽悗Makefile.ac濡備笅:
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.57)
AC_INIT([test],[1.0],[[email]arne_caspari@users.sourceforge.net[/email]])
AM_CONFIG_HEADER(config.h)
lt_major=1
lt_age=1
lt_revision=12
dist_version=0.1.12
AM_INIT_AUTOMAKE(test, $dist_version)
AC_SUBST(lt_major)
AC_SUBST(lt_revision)
AC_SUBST(lt_age)
# Checks for programs.
#AC_PROG_CC
#AC_PROG_INSTALL
#AC_PROG_LN_S
#AC_PROG_LIBTOOL
AM_PROG_LIBTOOL
# Checks for libraries.
pkg_modules="gtk+-2.0 >= 2.0.0"
PKG_CHECK_MODULES(GTK_PACKAGE, [$pkg_modules], HAVE_GTK2="yes", HAVE_GTK2="no" )
AC_SUBST(GTK_PACKAGE_CFLAGS)
AC_SUBST(GTK_PACKAGE_LIBS)
# Check for dl
DL_PRESENT=""
AC_CHECK_LIB( dl, dlopen, DL_PRESENT="yes",, $DL_LIBS -ldl )
if test "x$DL_PRESENT" = "xyes"; then
AC_DEFINE(HAVE_LIBDL, 1, [Define if DL lib is present])
DL_LIBS="-ldl"
AC_SUBST(DL_LIBS)
fi
# Check for libm
M_PRESENT=""
AC_CHECK_LIB( m, sin, M_PRESENT="yes",, $M_LIBS -lm )
if test "x$M_PRESENT" = "xyes"; then
AC_DEFINE(HAVE_LIBM, 1, [Define if libm is present])
M_LIBS="-lm"
AC_SUBST(M_LIBS)
fi
# Check for pthread 
PTHREAD_PRESENT=""
AC_CHECK_LIB( pthread, pthread_create, PTHREAD_PRESENT="yes",, $PTHREAD_LIBS
-lpthread )
if test "x$PTHREAD_PRESENT" = "xyes"; then
AC_DEFINE(HAVE_LIBPTHREAD, 1, [Define if libpthread is present])
PTHREAD_LIBS="-lpthread"
AC_SUBST(PTHREAD_LIBS)
fi
# Checks for header files.
#AC_HEADER_DIRENT
#AC_HEADER_STDC
#AC_CHECK_HEADERS([fcntl.h stdlib.h string.h sys/time.h unistd.h])
# Checks for typedefs, structures, and compiler characteristics.
#AC_TYPE_PID_T
#AC_TYPE_SIZE_T
#AC_HEADER_TIME
# Checks for library functions.
#AC_FUNC_CLOSEDIR_VOID
#AC_FUNC_MALLOC
#AC_CHECK_FUNCS([memset strstr])
AC_CONFIG_FILES([Makefile
             src/Makefile
             data/Makefile
             doc/Makefile])
AC_OUTPUT

2.鐢熸垚鍚勭洰褰曚笅鐨凪akefile.am鏂囦歡
./Makefile.am   //宸ョ▼鐩綍涓?/span>
  SUBDIR = src data doc
../src/Makefile.am  //婧愮爜鐩綍涓?/span>
  MAINTAINERCLEANFILES = Makefile.in
   INCLUDES = -I../include  
   CPPFLAGS=-DINSTALL_PREFIX="\"$(prefix)\""
   lib_LTLIBRARIES = libtest.la
   libtest_la_LDFLAGS = -version-info @lt_major@:@lt_revision@:@lt_age@
   libtest_la_SOURCES = \
                      test.c \
                      test_private.h \
                      check_match.c \
                      check_match.h \
                      test_helpers.c \
                      test_helpers.h \
                      debug.h
    libtest_la_LIBADD = \
                      @DL_LIBS@ \
                      @M_LIBS@

3. 鐢熸垚autogen.sh鑴氭湰, 鍐呭
#! /bin/sh
set -x
aclocal
autoheader
automake --foreign --add-missing --copy
autoconf

淇濆瓨鍚庝慨鏀規潈闄?chmod a+x autogen.sh

3.榪愯鑴氭湰./autogen.sh, 鐢熸垚configure鑴氭湰. 榪欓噷鍙兘浼氶亣鍒伴敊璇? 鍙互鏍規嵁閿欒鎻愮ず浣滅浉搴斾慨鏀?錛堟敞鎰忥細濡傛灉鎮ㄤ慨鏀逛簡Makefile.am涓殑欏癸紝閭d箞灝卞緱閲嶆柊鎵ц榪欎竴姝ワ級

4.榪愯./configure鑴氭湰.鑷姩鐢熸垚src鐩綍涓嬬殑makefile鏂囦歡

5. 鍒囨崲鍒扮洰褰晄rc, 榪愯make 鑷姩鍦ㄥ綋鍓嶇洰褰曚笅寤虹珛.libs鏂囦歡, 緙栫▼鐢熸垚鐨勫簱鏂囦歡灝變繚瀛樺湪璇ョ洰褰曚笅.
    make install 瀹夎鍦ㄩ粯璁ょ洰褰?/usr/local/lib/涓?

6.濡傛灉瑕佺敓鎴愬叾瀹冪殑瀹夎鐩綍錛孧akefile.am灝辮榪欐牱鍐?/span>
MAINTAINERCLEANFILES = Makefile.in
INCLUDES = -I../include 
lib_LTLIBRARIES = libtt.la
libdir = $(prefix)/lib/test  //榪欎釜灝辨槸瀹夎鐩綍
libtt_la_LDFLAGS = -version-info @lt_major@:@lt_revision@:@lt_age@
libtt_la_LIBADD = @PTHREAD_LIBS@
libtt_la_SOURCES = \
                tt.c \
                video.c \
                video.h

褰撶劧錛孧akefile涓殑璇硶瑙勫垯涓繕鏈夊緢澶氬畯瀹氫箟錛屾偍鍙互鍦∕akefile鐨勫畼鏂圭綉绔欐壘鍒拌鏄庛?/span>
涓嬩竴綃囧氨鎵撶畻鍐欏啓鏉′歡緙栬瘧鐨凪akefile鍐欐硶銆?/span>







 



likun 2011-12-19 22:47 鍙戣〃璇勮
]]>
鐢╣db璋冭瘯鍔ㄦ侀摼鎺ュ簱http://www.shnenglu.com/lk624424108/articles/162157.htmllikunlikunThu, 15 Dec 2011 02:56:00 GMThttp://www.shnenglu.com/lk624424108/articles/162157.htmlhttp://www.shnenglu.com/lk624424108/comments/162157.htmlhttp://www.shnenglu.com/lk624424108/articles/162157.html#Feedback0http://www.shnenglu.com/lk624424108/comments/commentRss/162157.htmlhttp://www.shnenglu.com/lk624424108/services/trackbacks/162157.html

鐢╣db璋冭瘯鍔ㄦ侀摼鎺ュ簱

    澶у閮界煡閬撳湪 Linux 鍙互鐢?gdb 鏉ヨ皟璇曞簲鐢ㄧ▼搴忥紝褰撶劧鍓嶆彁鏄敤 gcc 緙栬瘧紼嬪簭鏃惰鍔犱笂 -g 鍙傛暟銆?/p>

    鎴戣繖綃囨枃绔犻噷灝嗚璁轟竴涓嬬敤 gdb 鏉ヨ皟璇曞姩鎬侀摼鎺ュ簱鐨勯棶棰樸?/p>

    棣栧厛錛屽亣璁炬垜浠噯澶囪繖鏍風殑涓涓姩鎬侀摼鎺ュ簱錛?/p>

    寮曠敤錛?/p>

    搴撳悕縐版槸錛?ggg

    鍔ㄦ侀摼鎺ュ簱鏂囦歡鍚嶆槸錛?libggg.so

    澶存枃浠舵槸錛?get.h

    鎻愪緵榪欐牱涓や釜鍑芥暟璋冪敤鎺ュ彛錛?/strong>

     int get ();

     int set (int a);

    

    瑕佺敓鎴愯繖鏍蜂竴涓姩鎬侀摼鎺ュ簱錛屾垜浠鍏堢紪鍐欒繖鏍蜂竴涓ご鏂囦歡錛?/p>

    /************鍏充簬鏈枃妗?*******************************************

    *filename: get.h

    *********************************************************************/

    int get ();

    int set (int a);

    鐒跺悗鍑嗗榪欐牱涓涓敓鎴愬姩鎬侀摼鎺ュ簱鐨勬簮鏂囦歡錛?/p>

    /************鍏充簬鏈枃妗?*******************************************

    *filename: get.cpp

    *********************************************************************/

    #include

    #include "get.h"

    static int x=0;

    int get ()

    {

     printf ("get x=%d\n", x);

     return x;

    }

    int set (int a)

    {

     printf ("set a=%d\n", a);

     x = a;

     return x;

    }

    鐒跺悗鎴戜滑鐢?GNU 鐨?C/C++ 緙栬瘧鍣ㄦ潵鐢熸垚鍔ㄦ侀摼鎺ュ簱錛岀紪璇戝懡浠ゅ涓嬶細

    寮曠敤錛?/p>

    g++ get.cpp -shared -g -DDEBUG -o libggg.so

    榪欐牱鎴戜滑灝卞噯澶囧ソ浜嗗姩鎬侀摼鎺ュ簱浜嗭紝涓嬮潰鎴戜滑緙栧啓涓涓簲鐢ㄧ▼搴忔潵璋冪敤姝ゅ姩鎬侀摼鎺ュ簱錛屾簮浠g爜濡備笅錛?/p>

    /************鍏充簬鏈枃妗?*******************************************

    *filename: pk.cpp

    *********************************************************************/

    #include

    #include "get.h"

    int main (int argc, char** argv)

    {

     int a = 100;

     int b = get ();

     int c = set (a);

     int d = get ();

     printf ("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);

     return 0;

    }

    緙栬瘧姝ょ▼搴忕敤涓嬪垪鍛戒護錛屽鏋滃凡緇忔妸涓婇潰鐢熸垚鐨?libggg.so 鏀懼埌浜嗗簱鏂囦歡鎼滅儲璺緞鎸囧畾鐨勬枃浠剁洰褰曪紝姣斿 /lib 鎴?/usr/lib 涔嬬被鐨勶紝灝辯敤涓嬮潰榪欐潯鍛戒護錛?/p>

    寮曠敤錛?/p>

    g++ pk.cpp -o app -Wall -g -lggg

    鍚﹀垯灝辯敤涓嬮潰榪欐潯鍛戒護錛?/p>

    寮曠敤錛?/p>

    g++ pk.cpp -o app -Wall -g -lggg -L`pwd`

    涓嬮潰鎴戜滑灝卞紑濮嬭皟璇曚笂闈㈠懡浠ょ敓鎴愮殑 app 紼嬪簭鍚с傚鏋滃凡緇忔妸涓婇潰鐢熸垚鐨?libggg.so 鏀懼埌浜嗗簱鏂囦歡鎼滅儲璺緞鎸囧畾鐨勬枃浠剁洰褰曪紝姣斿 /lib 鎴?/usr/lib 涔嬬被鐨勶紝璋冭瘯灝遍『鍒╁畬鎴愶紝濡備笅錛?/p>

    寮曠敤錛?/p>

    #gdb ./app

    GNU gdb 6.4-debian

    Copyright 2005 Free Software Foundation, Inc.

    GDB is free software, covered by the GNU General Public License, and you are

    welcome to change it and/or distribute copies of it under certain conditions.

    Type "show copying" to see the conditions.

    There is absolutely no warranty for GDB. Type "show warranty" for details.

    This GDB was configured as "i486-linux-gnu"...Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1".

    (gdb) b main /* 榪欐槸鍦ㄧ▼搴忕殑 main 澶勮緗柇鐐?*/

    Breakpoint 1 at 0x804853c: file pk.cpp, line 7.

    (gdb) b set /* 榪欐槸鍦ㄧ▼搴忕殑 set 澶勮緗柇鐐?*/

    Function "set" not defined.

    Make breakpoint pending on future shared library load? (y or [n]) y /* 榪欓噷蹇呴』閫夋嫨 y 璋冭瘯紼嬪簭鎵嶄細璺熻釜鍒板姩鎬侀摼鎺ュ簱鍐呴儴鍘?*/

    Breakpoint 2 (set) pending.

    (gdb) run /* 寮濮嬭繍琛屾垜浠殑紼嬪簭錛岀洿鍒伴亣瑙佹柇鐐規椂鏆傚仠 */

    Starting program: /data/example/c/app

    Breakpoint 3 at 0xb7f665f8: file get.cpp, line 11.

    Pending breakpoint "set" resolved

    Breakpoint 1, main (argc=1, argv=0xbf990504) at pk.cpp:7

    7 int a = 100;

    (gdb) n /* 緇х畫鎵ц紼嬪簭鐨勪笅涓琛屼唬鐮?*/

    8 int b = get ();

    (gdb) n /* 紼嬪簭鎵ц鍒頒簡鎴戜滑鏂偣鎵鍦ㄧ殑鍔ㄦ侀摼鎺ュ簱浜?*/

    get x=0

    9 int c = set (a);

    (gdb) n

    Breakpoint 3, set (a=100) at get.cpp:11

    11 printf ("set a=%d\n", a);

    (gdb) list /* 鏌ョ湅褰撳墠浠g爜琛屽懆鍥寸殑浠g爜錛岃瘉鏄庢垜浠凡緇忚窡韙埌鍔ㄦ侀摼鎺ュ簱鐨勬簮浠g爜閲岄潰浜?*/

    6 printf ("get x=%d\n", x);

    7 return x;

    8 }

    9 int set (int a)

    10 {

    11 printf ("set a=%d\n", a);

    12 x = a;

    13 return x;

    14 }

    (gdb) n

    set a=100

    12 x = a;

    (gdb) n

    13 return x;

    (gdb) n

    14 }

    (gdb) n

    main (argc=1, argv=0xbf990504) at pk.cpp:10

    10 int d = get ();

    (gdb) n

    get x=100

    11 printf ("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);

    (gdb) n

    a=100,b=0,c=100,d=100

    12 return 0;

    (gdb) c

    Continuing.

    Program exited normally.

    (gdb) quit /* 紼嬪簭欏哄埄鎵ц緇撴潫 */

    濡傛灉鎴戜滑娌℃湁鎶婂姩鎬侀摼鎺ュ簱鏀懼埌鎸囧畾鐩綍錛屾瘮濡?lib閲岄潰錛岃皟璇曞氨浼氬け璐ワ紝榪囩▼濡備笅錛?/p>

    寮曠敤錛?/p>

    # gdb ./app

    GNU gdb 6.4-debian

    Copyright 2005 Free Software Foundation, Inc.

    GDB is free software, covered by the GNU General Public License, and you are

    welcome to change it and/or distribute copies of it under certain conditions.

    Type "show copying" to see the conditions.

    There is absolutely no warranty for GDB. Type "show warranty" for details.

    This GDB was configured as "i486-linux-gnu"...Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1".

    (gdb) b main

    Breakpoint 1 at 0x804853c: file pk.cpp, line 7.

    (gdb) b set

    Function "set" not defined.

    Make breakpoint pending on future shared library load? (y or [n]) y

    Breakpoint 2 (set) pending.

    (gdb) run /* 铏界劧璋冭瘯鎿嶄綔閮戒竴鏍鳳紝浣嗙▼搴忔墽琛屽け璐?*/

    Starting program: /data/example/c/app

    /data/example/c/app: error while loading shared libraries: libggg.so: cannot open shared object file: No such file or directory

    Program exited with code 0177.

    (gdb) quit
http://os.chinaunix.net/a2007/0830/976/000000976152.shtml



likun 2011-12-15 10:56 鍙戣〃璇勮
]]>
澶氱嚎紼媎ebughttp://www.shnenglu.com/lk624424108/articles/162152.htmllikunlikunThu, 15 Dec 2011 02:44:00 GMThttp://www.shnenglu.com/lk624424108/articles/162152.htmlhttp://www.shnenglu.com/lk624424108/comments/162152.htmlhttp://www.shnenglu.com/lk624424108/articles/162152.html#Feedback0http://www.shnenglu.com/lk624424108/comments/commentRss/162152.htmlhttp://www.shnenglu.com/lk624424108/services/trackbacks/162152.html闃呰鍏ㄦ枃

likun 2011-12-15 10:44 鍙戣〃璇勮
]]>
国产精品久久久天天影视| 伊人久久大香线蕉综合热线| 国内精品久久久久影院老司| 一本一道久久综合狠狠老| 久久人人爽爽爽人久久久| 26uuu久久五月天| 国内精品久久国产| 久久精品国产99国产电影网| 国内精品久久久久影院网站| 久久这里有精品| 国产精品久久久天天影视| 青青热久久国产久精品 | 亚洲欧洲精品成人久久奇米网| 婷婷五月深深久久精品| 久久99精品久久久久久9蜜桃| 伊人久久大香线蕉av一区| 久久久久成人精品无码| 久久国产精品一区二区| 精品国产乱码久久久久软件| 久久精品成人免费国产片小草| 少妇久久久久久被弄高潮| 久久毛片一区二区| 无码乱码观看精品久久| 99久久夜色精品国产网站| 亚洲精品国产成人99久久| 97精品国产97久久久久久免费| 久久久99精品成人片中文字幕 | 97久久精品人人做人人爽| 欧美黑人激情性久久| 久久99精品国产麻豆宅宅| 色综合久久夜色精品国产| 久久久人妻精品无码一区| 91精品国产综合久久香蕉 | 久久婷婷综合中文字幕| 无码人妻少妇久久中文字幕蜜桃 | 狠狠久久综合伊人不卡| 99久久精品免费看国产免费| 久久综合九色综合精品| 精品水蜜桃久久久久久久| 精品国产一区二区三区久久蜜臀| 久久综合狠狠综合久久激情 |