sql >> Database teknologi >  >> RDS >> PostgreSQL

Ruby 'pg' perle, der linker til forkert kopi af libpq.5.dylib (på OSX)

Både årsagen til problemet og en nem løsning blev tydelig, da jeg kørte bin/pg_config på kommandolinjen.

pg_config genererer de variable, der bruges til at kontrollere kompilering og linkning. Af særlig interesse er LIBDIR og LDFLAGS. LIBDIR angiver placeringen for statiske biblioteker, mens LDFLAGS giver placeringer til at søge efter dynamiske biblioteker. På mit system var LIBDIR indstillet korrekt til /LibraryPostgreSQL/9.3/lib , men LDFLAGS blev sat som følger:

LDFLAGS = -L../../../src/common -L/usr/local/lib -L/opt/local/20140109/lib -Wl,-dead-strip-dylibs

Siden libpq.5.dylib ikke var til stede på nogen af ​​disse steder, kunne ædelstenen ikke finde den og fandt i stedet en ældre version, der tilfældigvis var installeret på /usr/lib .

En måde at løse dette på ville være at injicere den korrekte filplacering i LDFLAGS, muligvis ved at ændre koden i extconf.rb der genererer konfigurationsfilen. Men en meget lettere løsning i dette tilfælde er blot at tilføje et symbollink i /usr/local/lib til den korrekte filplacering:

/usr/local/lib> ln -s /Library/PostgreSQL/9.3/lib/libpq.5.dylib libpq.5.dylib

Hvis du støder på et lignende problem, skal du bare undersøge outputtet af pg_config , og se om du kan placere et symbollink til den korrekte filplacering i en af ​​de mapper, der allerede er angivet af LDFLAGS.




  1. mysql fuldtekstsøgning mislykkedes

  2. 3 måder at få dagens navn fra en dato i MariaDB

  3. T-SQL Hvordan opretter man tabeller dynamisk i lagrede procedurer?

  4. Indsæt CreatedBy og CreatedOn i eventuelle manglende datatabeller i SQL