2016-03-26 25 views
0

İlk Makefile'mı destek soketlerini kullanarak basit bir sunucu için yapmaya çalışıyorum.Destek soketleri için makefile

Kodun pencerelerin altında çalışmasını sağlayabilirim.

o linux altında çalışmasına almak için ben bunu çalıştırdığınızda http://pastebin.com/QTms69Kd

Ancak `boost :: üzere tanımsız referans gibi hataları olsun bir marka dosyası var

c++ -I /var/boost/boost_1_55_0/ Source.cpp -o source -lboost_system 

komutunu çalıştırın system :: generic_category() '

Komutumdaki boost_system'i unuttuğumdan önce bu hatayı aldım. Ne yapıyorum yanlış?

cevap

1

Makefile'unuz doğru görünüyor ve normalde linux üzerinde çalışmasını beklerim.

boost::system ürününü bağlamak için haklısınız. boost::asio kitaplığı "yalnızca başlık" dır, ancak boost::system kitaplığını hata iletileri için kullanır, dolayısıyla boost::system yapısına bağlı olmalıdır. Bununla birlikte, bunlar, destekleyici kütüphaneleri birbirine bağlayan birkaç komplikasyondur. Kütüphanenin Öncelikle konumu

LDFLAGS := -L/path/to/boost_1_55_0/built_library_directory -lboost_system 

İkinci olarak, boost artırmak versiyonu ve muhtemelen derleyici tanımlamak için kütüphane adlarına ekleri addd .:, örneğin kütüphane kendisine ek olarak gerekli olabilir.
Yani Windows üzerinde boost_system olur:

libboost_system-vc140-mt-1_60.lib // MSVC 2015, boost 1.60 
libboost_system-mgw49-mt-1_60.a // MinGW, boost 1.60 

iken bir Fedora yüklemesinde (/ usr/lib64 cinsinden):

libboost_system.a 
libboost_system.so // symbolic link to: 
libboost_system.so.1.60.0 // gcc, boost 1.60 

Yani nasıl Sorununuz senin Makefile ilgili olmadığından düşünüyorum ama boost kitaplıklarını oluşturduk ve bunları yerleştirdiniz. Ayrıca, boost'un eski bir sürümünü neden kullanıyorsunuz?

+0

Muhtemelen eski bir eğiticiyi takip ettiğim için. (neden destek eskiydi) – Catprog