Компиляция в Ubuntu 20.04.4 LTS, g++ возвращает
libpq-fe.h is not found
В системе он уже установлен (sudo apt-get install libpq-dev) в
/usr/include/postgresql/libpq-fe.h
Я попытался установить путь компиляции с опцией -I/usr/include/postgresql, но он по-прежнему утверждает об отсутствии libpq-fe.h
Я вручную запустил команду make для одной цели с параметром -I/usr/include/postgresql, и она сработала. Думаю, мне нужно просмотреть Makefile. Спасибо
@alboforlizo Я только что попробовал с -I после того, как у меня возникла та же проблема, но безуспешно. Ваш комментарий выше не соответствует действительности?
-I/usr/include/postgresql решает проблемы компиляции, но не компоновки! Попробуйте вручную из командной строки, компилируется нормально: g++ -c *.cpp -I/usr/include/postgresql -lm -lcrypto -lpq -lpthread
/usr/bin/ld...неопределенная ссылка...Теперь у меня проблема со связью
Проблема с связыванием решается этой командой: g++ -L/usr/lib/x86_64-linux-gnu -o test *.o -lm -lcrypto -lpq -lpthread
Как видите, мне пришлось вручную вставить как -I/usr/include/postgresql, так и -L/usr/lib/x86_64-linux-gnu, чтобы -lpq (libpq) работал с g++ в Ubuntu:
TARGET = prog
LIBS = -lm -lcrypto -lpq -lpthread
CC = g++
CFLAGS = -g -Wall
ODIR = ../src
.PHONY: default all clean
default: $(TARGET)
all: default
OBJS = $(patsubst %.cpp, %.o, $(wildcard ../src/*.cpp))
HEADERS = $(wildcard ../src/*.h)
all: $(TARGET)
$(TARGET): $(OBJS)
$(CC) -L/usr/lib/x86_64-linux-gnu -o $@ $^ $(LIBS)
$(ODIR)/%.o: $(ODIR)/%.cpp
$(CC) $(CFLAGS) -I/usr/include/postgresql -c $< -o $@
clean:
-rm -f ../src/*.o
-rm -f $(TARGET)
В случае «не удается найти -lpq» с libpq.so.5 уже в /usr/lib/x86_64-linux-gnu:
sudo ln -s /usr/lib/x86_64-linux-gnu/libpq.so.5 /usr/lib/x86_64-linux-gnu/libpq.so
Пожалуйста, предоставьте минимальный воспроизводимый пример, демонстрирующий проблему.