lstat64 и stat64 не определены

#c #c #linux #ld #nm

#c #c #linux #ld #nm

Вопрос:

Когда я устанавливаю LD_BIND_NOW равным 1, а затем пытаюсь вызвать свое приложение для отладки сборки, оно не запускается из-за неопределенных символов lstat64, когда я запускаю nm и grep в «stat64»:

 U  lstat64@@libkernel32.so
U  stat64@@libgdiuser32.so
  

Где «libkernel32.so «и «libgdiuser32.so » взяты из стороннего пакета и не содержат никакого определения для lstat64.

Однако сборка rls работает нормально. Когда я запускаю nm на нем и grep «stat64»

 U ___lxstat64@@GLIBC_2.2
U ___xstat64@@GLIBC_2.2
T lstat64
T stat64
  

Я обнаружил, что отладочная версия kernel32.lib содержит:

 D stat64
D lstat64
U __xstat64
U __lxstat64
  

В то время как релизная версия kernel32.lib не содержит никаких ссылок на «lstat64» и «stat64»

В коде мы уже включили «sys/stat.h», почему компоновщик не извлекает их из библиотек glibc?

Или мы должны использовать «__lxstat64» вместо «lstat64»?

Комментарии:

1. Вы компилируете в Windows?

2. Нет, я компилирую в Linux.