2013-08-21 3 views
0

Я не слишком хорошо знаком с тем, как работает связывание, поэтому заранее извиняюсь, если у меня недостаточно деталей.Ссылка на bsd/stdlib.h

Я установил библиотеку Bsd с sudo apt-get install libbsd-dev на убунту 11.10 я относительно уверен, что это было установлено, в качестве функции человека в кучу/слияние существует (функции Я ищу)

файл C, который я хочу скомпилировать #include <bsd/stdlib.h> в верхней части файла. Я также #include <stdlib.h>.

Файл Makefile работает для других библиотек, в том числе time.h дает мне struct timespec

Есть ли какая-то ошибка в предположении, где склонные-прибудет устанавливает libbsd к? Является ли второй stdlib каким-то образом столкновением?

Еще раз извиниться за редкую деталь.

Код для Makefile ниже:

CFLAGS=-g -O2 -Wall -Wextra -Isrc -rdynamic -DNDEBUG $(OPTFLAGS) 
LIBS=-llcthw -lbsd -lrt -ldl $(OPTLIBS) 
LDLIBS=-lbsd -lrt -ldl 
PREFIX?=/usr/local 

SOURCES=$(wildcard src/**/*.c src/*.c) 
OBJECTS=$(patsubst %.c,%.o,$(SOURCES)) 

TEST_SRC=$(wildcard tests/*_tests.c) 
TESTS=$(patsubst %.c,%,$(TEST_SRC)) 

TARGET=build/liblcthw.a 
SO_TARGET=$(patsubst %.a,%.so,$(TARGET)) 

all : $(TARGET) $(SO_TARGET) tests 

ответ

2

Как о следующем патче? Этот патч предназначен для Makefile в http://c.learncodethehardway.org/book/ex28.html

--- orig/Makefile 2013-11-15 17:58:44.571824670 +0900 
+++ Makefile 2013-11-15 17:59:37.315825864 +0900 
@@ -1,5 +1,6 @@ 
-CFLAGS=-g -O2 -Wall -Wextra -Isrc -rdynamic -DNDEBUG $(OPTFLAGS) 
-LIBS=-ldl $(OPTLIBS) 
+CFLAGS=-g -O2 -Wall -Wextra -Isrc $(shell pkg-config --cflags libbsd) -rdynamic -DNDEBUG $(OPTFLAGS) 
+COMMON_LIBS = $(shell pkg-config --libs libbsd) -ldl $(OPTLIBS) 
+LDLIBS=$(COMMON_LIBS) 
PREFIX?=/usr/local 

SOURCES=$(wildcard src/**/*.c src/*.c) 
@@ -14,7 +15,7 @@ 
# The Target Build 
all: $(TARGET) $(SO_TARGET) tests 

-dev: CFLAGS=-g -Wall -Isrc -Wall -Wextra $(OPTFLAGS) 
+dev: CFLAGS=-g -Wall -Wextra -Isrc $(shell pkg-config --cflags libbsd) $(OPTFLAGS) 
dev: all 

$(TARGET): CFLAGS += -fPIC 
@@ -31,7 +32,7 @@ 

# The Unit Tests 
.PHONY: tests 
-tests: CFLAGS += $(TARGET) 
+tests: LDLIBS = $(TARGET) $(COMMON_LIBS) 
tests: $(TESTS) 
    sh ./tests/runtests.sh 
+0

Спасибо! Это сработало! Является ли исправление, в основном, просто перетаскиванием libbsd в правильном порядке, чтобы линкер ответил? Или исправление просто говорит компилятору, что libbsd необходим? (Это было дополнительное назначение кредита на ex35 LCTHW, но xubuntu не имеет сортировки слияния или кучи) –

Смежные вопросы