Не в состоянии собрать QuantLib на Ubuntu

Код

    #include <ql/quantlib.hpp>
#include <boost/timer.hpp>
int main ()
{
return 0;
}

Установка библиотеки

sudo apt-get install libquantlib-1.1

QuantLib Config

$quantlib-config --libs
-L/usr/lib -lQuantLib
$ quantlib-config --cflags
-I/usr/include
$

Шаг компиляции и ссылки:

$ g ++ test1.cpp -L / usr / lib -lQuantLib -I / usr / include -fPIC -o test1
/tmp/cc0GDoC4.o: В функции `QuantLib :: CPICoupon :: indexFixing () const ':
test1.cpp :(. text._ZNK8QuantLib9CPICoupon11indexFixingEv [QuantLib :: CPICoupon :: indexFixing () const] + 0x36): неопределенная ссылка на `QuantLib :: CPICoupon :: indexFixing (QuantLib :: Date const) const '
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib22SwaptionVolatilityCubeE[vtable для QuantLib :: SwaptionVolatilityCube] + 0x100): неопределенная ссылка на `не виртуальный переходник для QuantLib :: SwaptionVolatilityDiscrete ::
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib22SwaptionVolatilityCubeE0_NS_26SwaptionVolatilityDiscreteE[vtable для QuantLib :: SwaptionVolatilityCube] + 0xa8): неопределенная ссылка на виртуальный объект (не связан)
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib22CapFloorTermVolSurfaceE[vtable for QuantLib :: CapFloorTermVolSurface] + 0xc8): неопределенная ссылка на `не виртуальный переходник для обновления QuantLib :: CapFloolSerm :: QuantVib :: CapFloorSerm
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib20CapFloorTermVolCurveE[vtable для QuantLib :: CapFloorTermVolCurve] + 0xc8): неопределенная ссылка на «не виртуальный переходник для обновления QuantLib :: CapFloolvem для QuantLib :: CapFloolve»
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib20SpreadedSmileSectionE[vtable для QuantLib :: SpreadedSmileSection] + 0x50): неопределенная ссылка на `QuantLib :: SmileSection :: optionPrice (double, QuantLib :: Option :: Type, двойной) const '
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib20SpreadedSmileSectionE[vtable для QuantLib :: SpreadedSmileSection] + 0x58): неопределенная ссылка на «QuantLib :: SmileSection :: digitalOptionPrice (double, QuantLib :: Option» двойной, двойной) const '
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib20SpreadedSmileSectionE[vtable для QuantLib :: SpreadedSmileSection] + 0x60): неопределенная ссылка на `QuantLib :: SmileSection :: vega (double, double) const '
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib20SpreadedSmileSectionE[vtable для QuantLib :: SpreadedSmileSection] + 0x68): неопределенная ссылка на `QuantLib :: SmileSection :: density (double, double, double) const '
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib20SpreadedSmileSectionE0_NS_12SmileSectionE[vtable для QuantLib :: SpreadedSmileSection] + 0x50): неопределенная ссылка на `QuantLib :: SmileSection :: optionL: :: двойной) const '
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib20SpreadedSmileSectionE0_NS_12SmileSectionE[vtable для QuantLib :: SpreadedSmileSection] + 0x58): неопределенная ссылка на `QuantLib :: SmileSection :: doubleOn :: doubleOction :: digitalOn :: doubleOption двойной, двойной) const '
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib20SpreadedSmileSectionE0_NS_12SmileSectionE[vtable для QuantLib :: SpreadedSmileSection] + 0x60): неопределенная ссылка на `QuantLib :: SmileSection, double) ()
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib20SpreadedSmileSectionE0_NS_12SmileSectionE[vtable для QuantLib :: SpreadedSmileSection] + 0x68): неопределенная ссылка на `QuantLib :: SmileSection, двойная плотность, двойная плотность) (двойная плотность) (двойная плотность)
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib10FdmBatesOpE[vtable для QuantLib :: FdmBatesOp] + 0x60): неопределенная ссылка на `QuantLib :: FdmBatesOp :: toMatrixDecomp () const '
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib16FlatSmileSectionE[vtable для QuantLib :: FlatSmileSection] + 0x50): неопределенная ссылка на `QuantLib :: SmileSection :: optionPrice (double, QuantLib :: Option :: Type, двойной) const '
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib16FlatSmileSectionE[vtable для QuantLib :: FlatSmileSection] + 0x58): неопределенная ссылка на `QuantLib :: SmileSection :: digitalOptionPrice (double, QuantLib :: Option :: Type, двойной, двойной) const '
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib16FlatSmileSectionE[vtable для QuantLib :: FlatSmileSection] + 0x60): неопределенная ссылка на `QuantLib :: SmileSection :: vega (double, double) const '
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib16FlatSmileSectionE[vtable для QuantLib :: FlatSmileSection] + 0x68): неопределенная ссылка на `QuantLib :: SmileSection :: density (double, double, double) const '
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib16FlatSmileSectionE0_NS_12SmileSectionE[vtable для QuantLib :: FlatSmileSection] + 0x50): неопределенная ссылка на `QuantLib :: SmileSection :: OptionLibbice (optionPrice) двойной) const '
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib16FlatSmileSectionE0_NS_12SmileSectionE[vtable для QuantLib :: FlatSmileSection] + 0x58): неопределенная ссылка на `QuantLib :: SmileSection :: option TypeLice (digitalOptionP) двойной, двойной) const '
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib16FlatSmileSectionE0_NS_12SmileSectionE[vtable для QuantLib :: FlatSmileSection] + 0x60): неопределенная ссылка на `QuantLib :: SmileSection :: vega) двойной (двойной, двойной)
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib16FlatSmileSectionE0_NS_12SmileSectionE[vtable для QuantLib :: FlatSmileSection] + 0x68): неопределенная ссылка на `QuantLib :: SmileSection :: density) (double), double, double, double, double
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib27CPICapFloorTermPriceSurfaceE[vtable для QuantLib :: CPICapFloorTermPriceSurface] + 0xb0): неопределенная ссылка на объект QuantLib :: CPICapFliceLice :: Quantcast (CPICapFriceLice)
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib27CPICapFloorTermPriceSurfaceE[vtable для QuantLib :: CPICapFloorTermPriceSurface] + 0xb8): неопределенная ссылка на интерфейсную копию QuantLib :: CPICapFLicePrice_ClanP ::.
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib27CPICapFloorTermPriceSurfaceE[vtable для QuantLib :: CPICapFloorTermPriceSurface] + 0xc0): неопределенная ссылка на интерфейсную копию QuantLib :: CPICapFlicePervice :: QuanticeLb :: CPICapFlicePricePervice
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib27CPICapFloorTermPriceSurfaceE[vtable для QuantLib :: CPICapFloorTermPriceSurface] + 0x128): неопределенная ссылка на контекстную реплику QuantLib :: CPICapFromServer :: Quantcast
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib9CPICouponE[vtable для QuantLib :: CPICoupon] + 0x30): неопределенная ссылка на `QuantLib :: CPICoupon :: accept (QuantLib :: AcyclicVisitor) '
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib9CPICouponE[vtable для QuantLib :: CPICoupon] + 0x78): неопределенная ссылка на `QuantLib :: CPICoupon :: checkPricerImpl (boost :: shared_ptr const) const '
collect2: ld вернул 1 статус выхода

Не могли бы вы мне помочь ?

1

Решение

Вы установили бинарные файлы QuantLib 1.1 через apt-get, но вы включаете заголовки из более новой версии (возможно, той, что вы скачали?)
Более новые заголовки определяют больше функций, которые отсутствуют в бинарном файле 1.1 и вызывают ошибки компоновщика.

Чтобы избежать ошибок, вам нужно использовать заголовки и двоичные файлы одной и той же версии.
Чтобы использовать более новый, соберите и установите двоичные файлы QuantLib самостоятельно; это должно быть так же просто, как выполнить:

./configure
make
sudo make install

Чтобы использовать версию 1.1 вместо этого, вам нужно установить dev пакет, который содержит заголовки. В моей системе это можно сделать, выполнив

sudo apt-get install libquantlib0-dev

но опять же у меня есть libquantlib0 вместо libquantlib-1.1 как ты уже говорил, так что лучше беги apt-cache search quantlib и узнайте, как называется пакет dev.

0

Другие решения


По вопросам рекламы [email protected]