2012-05-01 16 views
10

I grep na inne tematy, ale nie pomaga mi = (. na moim serwerze roboczym, nie mam privilegies sudo, więc zainstalować PB zNie można skompilować przykład z buforów protokołu Google

./configure prefix =/home/nazwa_użytkownika/local

potem tworzyć pliki źródłowe z "osoba" przykład i skompilować go z powodzeniem protoc.

nie mam pkg-info = (. i spróbować skompilować go z

g ++ -I/home/nazwa_użytkownika/local/include -l/home/nazwa_użytkownika/local/lib -lprotobuf -lpthread main.cpp person.pb.cc

i wtedy miliard błędy simular tj

person.pb.cc:(.text+0x4cf): niezdefiniowane odniesienia do `google protobuf :: :: :: kEmptyString wewnętrzny”

myślę, że to jest problem z łączeniem, ale jak go rozwiązać?

echo $ LD_LIBRARY_PATH /home/nazwa_użytkownika/local/lib

w main.cpp:

#include "person.pb.h" 
... 

Dzięki.

Odpowiedz

19

Put bibliotekę na koniec:

g ++ -I/home/nazwa_użytkownika/local/include -L/home/nazwa_użytkownika/local/lib main.cpp person.pb.cc -lprotobuf -pthread

od GCC Link Options:

 
-llibrary 
-l library 
    Search the library named library when linking. 
    (The second alternative with the library as a separate argument 
    is only for POSIX compliance and is not recommended.) 

    It makes a difference where in the command you write this option; 
    the linker searches and processes libraries and object files in the 
    order they are specified. 
    Thus, `foo.o -lz bar.o' searches library `z' after file foo.o but 
    before bar.o. If bar.o refers to functions in `z', those functions 
    may not be loaded. 

także skorzystać -pthread zamiast -lpthread jako -pthread mogą ustawić flagi dla Prepr ocessor i linker.

+0

WOW !!! Jest genialny! Dziękuję Ci! – ZhekakehZ

+0

Naprawdę zaoszczędziłeś mi dużo czasu! Dziękuję Ci! –

2

Biblioteka powiązanie flagi iść na koniec argumentów kompilator za:

g ++ -I/home/nazwa_użytkownika/local/include -L/home/nazwa_użytkownika/local/lib main.cpp person.pb .cc -lprotobuf -lpthread

Powiązane problemy