Date: Fri, 2 Jul 2010 14:51:16 -0700 From: Matthew Fleming <mdf356@gmail.com> To: freebsd-hackers@freebsd.org Subject: Using lex in a shared library Message-ID: <AANLkTilp0zvMRbw96cifhIzmT4YbNVkxgOFZFa_nvl2m@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
I have the following Makefile for a shared library at $work: ISI_TOP= ../.. LIB= isi_date SHLIB_MAJOR= 1 SHLIB_MINOR= 0 SRCS= date.c date_parser.new.c lex.yy.c INCS= date.h INCLUDEDIR= /usr/include/isi_date YFLAGS+= -vt FLEX= /usr/bin/flex LDADD= -ll CLEANFILES+= date_parser.new.c y.tab.h y.tab.c lex.yy.c y.output \ check_date.log test lex.yy.c: date_lexer.new.l ${FLEX} $> CFLAGS+= -I${.CURDIR} #CFLAGS+= -g .include "${ISI_TOP}/isi.lib.mk" This builds fine as on i386. I'm trying to get all our user-space to be 64-bit clean, and I run into an error when building on amd64: /data/sb/BR_MDF_64CLEAN/obj/data/sb/BR_MDF_64CLEAN/src/tmp/usr/bin/ld: /data/sb/BR_MDF_64CLEAN/obj/data/sb/BR_MDF_64CLEAN/src/tmp/usr/lib/libl.a(libyywrap.o): relocation R_X86_64_32 can not be used when making a shared object; recompile with -fPIC /data/sb/BR_MDF_64CLEAN/obj/data/sb/BR_MDF_64CLEAN/src/tmp/usr/lib/libl.a: could not read symbols: Bad value The following diff makes the compile work, but I have no idea (yet) whether this will run, if it's the right solution, etc. Index: usr.bin/lex/lib/Makefile =================================================================== --- usr.bin/lex/lib/Makefile (revision 153343) +++ usr.bin/lex/lib/Makefile (working copy) @@ -4,11 +4,16 @@ LIB= ln SRCS= libmain.c libyywrap.c -NO_PIC= +#NO_PIC= +SHLIB_MAJOR= 1 +SHLIB_MINOR= 0 + .if ${MK_INSTALLLIB} != "no" LINKS= ${LIBDIR}/libln.a ${LIBDIR}/libl.a LINKS+= ${LIBDIR}/libln.a ${LIBDIR}/libfl.a +LINKS+= ${LIBDIR}/libln.so ${LIBDIR}/libl.so +LINKS+= ${LIBDIR}/libln${LIB_SUFFIX}.so ${LIBDIR}/libl${LIB_SUFFIX}.so .endif .if ${MK_PROFILE} != "no" Thanks, matthew
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTilp0zvMRbw96cifhIzmT4YbNVkxgOFZFa_nvl2m>