锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国内精品久久久久伊人av,日本强好片久久久久久AAA,国内精品伊人久久久久影院对白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

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

3.榪愯鑴氭湰./autogen.sh, 鐢熸垚configure鑴氭湰. 榪欓噷鍙兘浼氶亣鍒伴敊璇? 鍙互鏍規(guī)嵁閿欒鎻愮ず浣滅浉搴斾慨鏀?錛堟敞鎰忥細濡傛灉鎮(zhèn)ㄤ慨鏀逛簡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涓殑璇硶瑙勫垯涓繕鏈夊緢澶氬畯瀹氫箟錛屾?zhèn)ㄥ彲浠ュ湪Makefile鐨勫畼鏂圭綉绔欐壘鍒拌鏄庛?/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 /* 寮濮嬭繍琛屾垜浠殑紼嬪簭錛岀洿鍒伴亣瑙佹柇鐐規(guī)椂鏆傚仠 */

    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 鍙戣〃璇勮
]]>
精品久久久久久无码中文字幕| 青青青伊人色综合久久| 亚洲婷婷国产精品电影人久久| 亚洲精品无码久久不卡| 亚洲精品综合久久| 国产V综合V亚洲欧美久久| 一本大道加勒比久久综合| 伊人久久大香线蕉综合网站| 欧美一区二区三区久久综| 欧美久久综合性欧美| 思思久久99热只有频精品66| 日产精品久久久久久久| 久久99精品久久久久久9蜜桃| 一本久久a久久精品综合香蕉| 久久久久女人精品毛片| 久久国产热这里只有精品| 亚洲国产另类久久久精品黑人| 99久久99久久精品国产片果冻| 久久久久久精品久久久久| yellow中文字幕久久网| 日产精品久久久久久久性色| 伊人久久亚洲综合影院| 久久AAAA片一区二区| 精品久久久久中文字幕日本| 色老头网站久久网| 伊人久久亚洲综合影院| 精品久久久久久无码人妻热| 国内精品伊人久久久久av一坑 | 久久精品国产只有精品2020| 国产精品美女久久福利网站| 97久久香蕉国产线看观看| 99久久精品免费看国产一区二区三区 | 99热成人精品热久久669| 欧美日韩精品久久久久| 久久精品国产欧美日韩| 99久久免费国产精精品| 久久久久久曰本AV免费免费| 久久久久久国产精品美女| 国产精品成人99久久久久91gav | 99久久免费国产精精品| 免费久久人人爽人人爽av|