[Litepac-devel] [patch] fixed linking

thecrux at gmail.com thecrux at gmail.com
Sat May 19 23:42:04 MSK 2012


Привет.

При сборке на 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



More information about the Litepac-devel mailing list