[問題] Undefined Reference library中的function
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) ubuntu 11.10 \n \l
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) GCC OpenSSL和網路下載的函示庫
問題(Question): 網路下載的程式compile完後的library在link的時候出現undefined Reference 該library中的function
餵入的資料(Input): 無餵入資料
預期的正確結果(Expected Output): link後可以使用該library中的function
錯誤結果(Wrong Output): undefined reference to 該library中的function
程式碼(Code):(請善用置底文網頁, 記得排版)
該library compile是libbd_api.a
以下是該library的makefile
OS_NAME=linux
SSL_LIB=/home/oliwad2/tree5/trunk/ns-allinone-2.35/ns-2.35/ssl/
SSL_INCLUDE=-I/home/oliwad2/tree5/trunk/ns-allinone-2.35/ns-2.35/ssl/include
BD_DIR=.
COMMON_DIR=../common
BD_DIST = $(BD_DIR)/$(OS_NAME)
BD_INCLUDE=$(BD_DIR)/src
BD_OBJDIR=$(BD_DIR)/$(OS_NAME)/obj
BD_LIBDIR=$(BD_DIR)/$(OS_NAME)/lib
BD_BINDIR=$(BD_DIR)/$(OS_NAME)/bin
SRC=$(BD_DIR)/src/bd_api.c
HDR=$(BD_INCLUDE)/bd_api.h
OBJ=$(BD_OBJDIR)/bd_api.o
BD_LIB=$(BD_LIBDIR)/libbd_api.a
BD_ERROR_HDR=$(COMMON_DIR)/error.h
MISC_SRC=$(BD_DIR)/src/bd_api_misc.c
MISC_HDR=$(BD_INCLUDE)/bd_api_misc.h
MISC_OBJ=$(BD_OBJDIR)/bd_api_misc.o
BD_CERT_SRC=$(COMMON_DIR)/common.c
BD_CERT_HDR=$(COMMON_DIR)/common.h
BD_CERT_OBJ=$(BD_OBJDIR)/common.o
BD_SIG_SRC=$(BD_DIR)/src/bd_sig.c
BD_SIG_HDR=$(BD_INCLUDE)/bd_sig.h
BD_SIG_OBJ=$(BD_OBJDIR)/bd_sig.o
BD_TEST_SRC=$(BD_DIR)/src/bd_test.c
BD_TEST_HDR=$(BD_INCLUDE)/bd_test.h
BD_TEST_OBJ=$(BD_OBJDIR)/bd_test.o
BD_TEST_BIN=$(BD_BINDIR)/bd_test
BD_TEST_MISC_SRC=$(BD_DIR)/src/bd_test_misc.c
BD_TEST_MISC_HDR=$(BD_INCLUDE)/bd_test_misc.h
BD_TEST_MISC_OBJ=$(BD_OBJDIR)/bd_test_misc.o
CC=gcc
INCLUDES= $(SSL_INCLUDE) -I$(BD_INCLUDE) -I$(COMMON_DIR)
LIB=-lcrypto -lm
CFLAGS=-g -O2 -Wall -L $(SSL_LIB)
LDFLAGS=
AR=ar
ARFLAG=-vru
all: $(BD_TEST_BIN) $(BD_LIB)
lib: $(BD_LIB)
$(BD_LIB): $(OBJ) $(MISC_OBJ) $(BD_CERT_OBJ) \
$(BD_SIG_OBJ)
@if [ ! -d $(BD_LIBDIR) ]; then mkdir $(BD_LIBDIR); fi
$(AR) $(ARFLAG) $@ $?
補充說明(Supplement): 有利用nm 去檢查該library 有顯示如下
00000730 T bd_new_member (bd_new_member是該library下我想使用的function)
我link的方式(假設要用到該library的檔名為testfile)是gcc testfile.c -lbd_api -lcrypto -L\放置libbd_api.a的資料夾 -L\放置OpenSSL library的資料夾
不知道是當初這個library makefile的問題還是我link的方式有問題
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.26.85
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章