ROX-Filer baut nicht aus ports (Grund: inotify_init)

Wasp

Insektenspray-Gegner
Hallo,

mal so ganz fesch gefragt: hat mal wer versucht ports/rox-filer zu bauen? Also bei mir unter FreeBSD 10.2-release unter ix86_64 tut's nicht. :/

Problem ist sys/inotify.h: inotify_init. Dazu finden sich ähnliche Probleme im Internet zu anderen Programmen, aber leider keine Lösung, die -- zumindest mir -- bei rox-filer weiter hilft. Eigentlich ist auch alles da, von daher verstehe ich es auch nicht so ganz.

Zumindest unter Linux soll eine aktuellere bzw. ältere Version (finde Artikel gerade nicht wieder), weitergeholfen haben, allerindgs ist wie gesagt eigentlich auch alles vorhanden (vgl. weiter unten). In den ports kann ich so oder so nur libc++ finden.

Um es besser zu verstehen, habe ich ein simples Beispielprogramm geschrieben.

test-inotify.c:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <sys/inotify.h>

int main() {
    int fd = inotify_init();
    if(fd < 0) {
        printf("inotify init failed with error #%d\n", fd);
        exit(1);
    }
    return 0;
}

Bauen mit gcc48:
Code:
~> gcc -v -I/usr/local/include/ -L/usr/local/lib/ -otest-intoify test-inotify.c
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc48/gcc/x86_64-portbld-freebsd10.2/4.8.5/lto-wrapper
Target: x86_64-portbld-freebsd10.2
Configured with: ./../gcc-4.8.5/configure --with-build-config=bootstrap-debug --disable-nls --enable-gnu-indirect-function --libdir=/usr/local/lib/gcc48 --libexecdir=/usr/local/libexec/gcc48 --program-suffix=48 --with-as=/usr/local/bin/as --with-gmp=/usr/local --with-gxx-include-dir=/usr/local/lib/gcc48/include/c++/ --with-ld=/usr/local/bin/ld --with-pkgversion='FreeBSD Ports Collection' --with-system-zlib --with-ecj-jar=/usr/local/share/java/ecj-4.5.jar --enable-languages=c,c++,objc,fortran,java --prefix=/usr/local --localstatedir=/var --mandir=/usr/local/man --infodir=/usr/local/info/gcc48 --build=x86_64-portbld-freebsd10.2
Thread model: posix
gcc version 4.8.5 (FreeBSD Ports Collection)
COLLECT_GCC_OPTIONS='-v' '-I' '/usr/local/include/' '-L/usr/local/lib/' '-o' 'test-intoify' '-mtune=generic' '-march=x86-64'
/usr/local/libexec/gcc48/gcc/x86_64-portbld-freebsd10.2/4.8.5/cc1 -quiet -v -I /usr/local/include/ test-inotify.c -quiet -dumpbase test-inotify.c -mtune=generic -march=x86-64 -auxbase test-inotify -version -o /tmp//ccwUUi3a.s
GNU C (FreeBSD Ports Collection) version 4.8.5 (x86_64-portbld-freebsd10.2)
compiled by GNU C version 4.8.5, GMP version 5.1.3, MPFR version 3.1.3, MPC version 1.0.3
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "/usr/local/lib/gcc48/gcc/x86_64-portbld-freebsd10.2/4.8.5/../../../../../x86_64-portbld-freebsd10.2/include"
ignoring duplicate directory "/usr/local/include/"
as it is a non-system directory that duplicates a system directory
#include "..." search starts here:
#include <...> search starts here:
/usr/local/lib/gcc48/gcc/x86_64-portbld-freebsd10.2/4.8.5/include
/usr/local/include
/usr/local/lib/gcc48/gcc/x86_64-portbld-freebsd10.2/4.8.5/include-fixed
/usr/include
End of search list.
GNU C (FreeBSD Ports Collection) version 4.8.5 (x86_64-portbld-freebsd10.2)
compiled by GNU C version 4.8.5, GMP version 5.1.3, MPFR version 3.1.3, MPC version 1.0.3
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 8ee4e6bc4e0e1b7037e8c9a1269e7ea0
COLLECT_GCC_OPTIONS='-v' '-I' '/usr/local/include/' '-L/usr/local/lib/' '-o' 'test-intoify' '-mtune=generic' '-march=x86-64'
/usr/local/bin/as -v -I /usr/local/include/ -o /tmp//ccNgadNt.o /tmp//ccwUUi3a.s
GNU assembler version 2.25.1 (x86_64-portbld-freebsd10.2) using BFD version (GNU Binutils) 2.25.1
COMPILER_PATH=/usr/local/libexec/gcc48/gcc/x86_64-portbld-freebsd10.2/4.8.5/:/usr/local/libexec/gcc48/gcc/x86_64-portbld-freebsd10.2/4.8.5/:/usr/local/libexec/gcc48/gcc/x86_64-portbld-freebsd10.2/:/usr/local/lib/gcc48/gcc/x86_64-portbld-freebsd10.2/4.8.5/:/usr/local/lib/gcc48/gcc/x86_64-portbld-freebsd10.2/:/usr/local/lib/gcc48/gcc/x86_64-portbld-freebsd10.2/4.8.5/../../../../../x86_64-portbld-freebsd10.2/bin/
LIBRARY_PATH=/usr/local/lib/gcc48/gcc/x86_64-portbld-freebsd10.2/4.8.5/:/usr/local/lib/gcc48/gcc/x86_64-portbld-freebsd10.2/4.8.5/../../../../../x86_64-portbld-freebsd10.2/lib/:/usr/local/lib/gcc48/gcc/x86_64-portbld-freebsd10.2/4.8.5/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-I' '/usr/local/include/' '-L/usr/local/lib/' '-o' 'test-intoify' '-mtune=generic' '-march=x86-64'
/usr/local/libexec/gcc48/gcc/x86_64-portbld-freebsd10.2/4.8.5/collect2 --eh-frame-hdr -V -dynamic-linker /libexec/ld-elf.so.1 -o test-intoify /usr/lib/crt1.o /usr/lib/crti.o /usr/local/lib/gcc48/gcc/x86_64-portbld-freebsd10.2/4.8.5/crtbegin.o -L/usr/local/lib/ -L/usr/local/lib/gcc48/gcc/x86_64-portbld-freebsd10.2/4.8.5 -L/usr/local/lib/gcc48/gcc/x86_64-portbld-freebsd10.2/4.8.5/../../../../../x86_64-portbld-freebsd10.2/lib -L/usr/local/lib/gcc48/gcc/x86_64-portbld-freebsd10.2/4.8.5/../../.. /tmp//ccNgadNt.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/local/lib/gcc48/gcc/x86_64-portbld-freebsd10.2/4.8.5/crtend.o /usr/lib/crtn.o
GNU ld (GNU Binutils) 2.25.1
Supported emulations:
elf_x86_64_fbsd
elf_i386_fbsd
elf_x86_64
elf_i386
elf_l1om
elf_l1om_fbsd
elf_k1om
elf_k1om_fbsd
/tmp//ccNgadNt.o: In function `main':
test-inotify.c:(.text+0x9): undefined reference to `inotify_init'
collect2: error: ld returned 1 exit status

libinotify als auch funktion in der lib ist vorhanden:
Code:
:~ 1> strings /usr/local/lib/libinotify.so.0.0.0 | grep -i inotify
inotify_add_watch
inotify_init
inotify_init1
inotify_rm_watch
libinotify.so.0

In Bezug auf den erwähnten Artikel, libc ist auch da:
Code:
~ 1> ldconfig -r | grep -i libc\\.
34:-lc.7 => /lib/libc.so.7

Und ganz trivial, die include-Datei mit der entsprechenden Funktion ist auch da:
Code:
~ 1> grep -i _init -C1 /usr/local/include/sys/inotify.h

/* Flags for the parameter of inotify_init1. */
#define IN_CLOEXEC 02000000 /* Linux x86 O_CLOEXEC */
--
/* Create and initialize inotify-kqueue instance. */
INO_EXPORT int inotify_init (void) __THROW;

/* Create and initialize inotify-kqueue instance. */
INO_EXPORT int inotify_init1 (int flags) __THROW;

Kann ohne ROX-filer der GNU-Banausen leider nicht richtig X11'en. Weiß jemand Rat? :/

Besten Dank im Voraus
Wasp
 

Yamagi

Possessed With Psi Powers
Teammitglied
Code:
gcc -v -I/usr/local/include/ -L/usr/local/lib/ -otest-intoify test-inotify.c
Es war spät und du hast vergessen libinotify zu linken. :) Davon einmal abgesehen ist inotify leider ein Linuxismus und ich weiß nicht, wie gut und kompatibel die Wrapper-Blibiothek ist. Eventuell einfach nicht kompatibel genug.
 

Wasp

Insektenspray-Gegner
Dank Dir erst einmal -- mal wieder -- für Deine Antwort.
Ja war wirklich schon spät, wie es scheint. Da ist mir ebenso ein entscheidendes wichtiges Wort abhanden gekommen: libc
Zumindest unter Linux soll eine aktuellere bzw. ältere Version [von libc] (...), weitergeholfen haben

(Andernfalls ergibt der Satz schwerlich Sinn bzw. führt zu Missverständnis.)

Ansonsten, klingts nach einem guten Rat. ;) Hab das System gerade nicht zur Hand, aber denkst Du, daß ist auch das Problem mit dem Port? Probiert die denn niemand mal vorher aus?
 
Oben