2

コードをコンパイルすると、次のような問題が発生します。

io.cpp:21: undefined reference to `PQconnectdb'

私のコードで発生している行方不明のpostgres関数呼び出しの他のすべてのインスタンスと同様に。明らかにこれはリンクの問題です。リンクの問題が何であるかはわかりません。

私は次のようにコンパイルしています:

mpiCC -c -O2 -g -Wall -Werror -I /usr/include/postgresql/ decisioning_mpi.cpp
g++ -c -O2 -g -Wall -Werror -I /usr/include/postgresql/ io.cpp
g++ -c -O2 -g -Wall -Werror -I /usr/include/postgresql/ calculations.cpp
g++ -c -O2 -g -Wall -Werror -I /usr/include/postgresql/ rules.cpp
g++ -c -O2 -g -Wall -Werror -I /usr/include/postgresql/ Instrument.cpp
g++ -c -O2 -g -Wall -Werror -I /usr/include/postgresql/ Backtest_Parameter_CPO.cpp
g++ -c -O2 -g -Wall -Werror -I /usr/include/postgresql/ Backtest_Trade_CPO.cpp
g++ -c -O2 -g -Wall -Werror -I /usr/include/postgresql/ Data_Bar.cpp
mpiCC -o decisioning_mpi -O2 -g -Wall -Werror -L/usr/lib -lm -lpq decisioning_mpi.o 
io.o calculations.o rules.o Instrument.o Backtest_Parameter_CPO.o Backtest_Trade_CPO.o Data_Bar.o

これはlibpq-fe.hの正しいディレクトリであり、pq をリンクしていることに注意してください。そのため、postgres 関数が正しくリンクしていない理由が正確にはわかりません。Ubuntu 12.04 を実行しており、synaptic から psql (PostgreSQL) 9.1.6 をインストールしています。同様に、これを短絡します。#include "libpq-fe.h" を使用しています。

このリンクの問題を解決する方法についてのアイデアはありますか?

4

1 に答える 1

1

リンクコマンドの最後に置く-L/usr/lib/ -lm -lpqと、リンカーはシンボルを見つけることができます

mpiCC -o decisioning_mpi -O2 -g -Wall -Werror decisioning_mpi.o io.o \
calculations.o rules.o Instrument.o Backtest_Parameter_CPO.o \
Backtest_Trade_CPO.o Data_Bar.o -L/usr/lib -lm -lpq

GCC リンク リファレンス: http://www.network-theory.co.uk/docs/gccintro/gccintro_18.html

于 2012-11-17T11:08:22.403 に答える