From thecrux at gmail.com Sat May 19 23:42:04 2012 From: thecrux at gmail.com (thecrux at gmail.com) Date: Sat, 19 May 2012 23:42:04 +0400 Subject: [Litepac-devel] [patch] fixed linking Message-ID: <20120519194204.GA29484@mail.truecrux.org> Привет. При сборке на ALTLinux Sisyphus обнаружил ошибку: .... cc vmachined.o vmconf.o task.o sched.o -Wall -g -gstabs -O0 -D_ISOC99_SOURCE -D_GNU_SOURCE -D_XOPEN_SOURCE=500 -I ../include -I ../lib -rdynamic -I../libhal -L ../lib -L../libvmrt -L../libhal -o vmachined -llib -ldl -lm -lrt -lvmrt -lhal -llib ../libvmrt/libvmrt.a(vm.o): In function `vm_foper': vm.c:464: undefined reference to `fmodf' ../libvmrt/libvmrt.a(vmlibcall.o): In function `vm_libcall_load': vmlibcall.c:74: undefined reference to `dlopen' vmlibcall.c:76: undefined reference to `dlerror' vmlibcall.c:84: undefined reference to `dlerror' vmlibcall.c:85: undefined reference to `dlsym' vmlibcall.c:87: undefined reference to `dlerror' ../libvmrt/libvmrt.a(vmlibcall.o): In function `vm_libcall_unload': vmlibcall.c:112: undefined reference to `dlclose' collect2: ld returned 1 exit status make[1]: *** [vmachined] Ошибка 1 make[1]: Leaving directory `/home/crux/devel/litepac/vmachined' В ALTLinux линкер по-умолчанию запускается с флагом --as-needed и, по всей видимости, не найдя символов из libdl на том месте, где указана -ldl, и не стал её линковать. Т.о. требуется изменить порядок библиотек, чтобы тот объектник, которому нужен libdl стоял раньше в списке. Прикинул такой патчик: Index: libvmrt/Makefile =================================================================== --- libvmrt/Makefile (revision 4) +++ libvmrt/Makefile (working copy) @@ -2,7 +2,7 @@ LDFLAGS += -L ../libvmrt -LDLIBS_VM = -lm -ldl -lvmrt +LDLIBS_VM = -lvmrt -lm -ldl LDLIBS_VM += $(LDLIBS) CFLAGS += -rdynamic Index: vmachined/Makefile =================================================================== --- vmachined/Makefile (revision 4) +++ vmachined/Makefile (working copy) @@ -2,7 +2,7 @@ VMACHINED_OBJS = vmachined.o vmconf.o task.o sched.o -LDLIBS += -ldl -lm -lrt -lvmrt -lhal -llib +LDLIBS += -lrt -lvmrt -lhal -llib -ldl -lm LDFLAGS += -L../libvmrt -L../libhal CFLAGS += -rdynamic -I../libhal -- Vladimir Lettiev aka crux ✉ theCrux at gmail.com