Frage

Getting diese Fehler während C ++ Code kompiliert:

undefined reference to `__stack_chk_fail'

Optionen bereits versucht:

  1. hinzugefügt -fno-Stack-Protektor beim Kompilieren - hat nicht funktioniert, Fehler weiter besteht
  2. hinzugefügt, um eine Dummy-Implementierung von Leere __stack_chk_fail (void) in meinem Code. Immer noch die gleichen Fehler.

Detaillierte Fehler:

/u/ac/alanger/gurobi/gurobi400/linux64/lib/libgurobi_c++.a(Env.o)(.text+0x1034): In function `GRBEnv::getPar/u/ac/alanger/gurobi/gurobi400/linux64/lib/libgurobi_c++.a(Env.o)(.text+0x1034): In function `GRBEnv::getParamInfo(GRB_StringParam, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)':
: undefined reference to `__stack_chk_fail'
amInfo(GRB_StringParam, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)':
: **undefined reference to `__stack_chk_fail'**

Früher war ich immer 10 ist solcher Fehler. Fand heraus, dass ein Versionskonflikt zwischen dem gcc der vorkompilierte Bibliotheken war ich verwende und die gcc Version, die ich den Code kompilieren wurde mit. Aktualisiert gcc und jetzt bekomme ich nur 2 dieser Fehler.

Jede Hilfe, bitte?

War es hilfreich?

Lösung

libgurobi_c ++ a. Wurde zusammengestellt mit -fno-Stack-Protektor (offensichtlich).

Ein paar Dinge in den Sinn kommen:

  1. Add -fno-stack-Protektor bei der Verknüpfung. Dadurch wird sichergestellt, dass libssp verknüpft wird.
  2. manuell Link -lssp
  3. Machen Sie Ihre Dummy-Version von __stack_chk_fail (void) in seine eigene Objektdatei und und fügen Sie diese .o-Datei auf Ihrem Linker Befehl nach libgurobi_c ++. A. GCC / G ++ Entschlüssen Symbole von links nach rechts während der Verknüpfung so trotz der Code mit der Funktion definiert ist, eine Kopie eines Objekts die __stack_chk_fail Symbol Bedürfnisse enthält rechts von libgurobi_c auf dem Linker Linie sein ++. A.

Andere Tipps

https://wiki.ubuntu.com/ToolChain/CompilerFlags

sagt:

„In der Regel ist dies ein Ergebnis von während eines Build ld statt gcc Aufruf Verknüpfung auszuführen“

Das ist, was ich auf, wenn das Makefile geändert manuell von libjpeg. Verwenden Sie gcc statt ld das Problem gelöst.

In gentoo hatte ich das gleiche Problem, und ich beschlossen, 2-Dateien. Die enthält zunächst die Option entstehen und weitergegeben gcc analysiert werden:

/etc/portage/env/nostackprotector.conf
CFLAGS="-fno-stack-protector -O2"

Und die zweite sagt, welches Paket diese Einstellungen verwenden sollte:

/etc/portage/package.env/nostackprotector
x11-libs/vte nostackprotector.conf
sys-libs/glibc nostackprotector.conf
www-client/chromium nostackprotector.conf
app-admin/sudo nostackprotector.conf
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top