看板 FB_chat 關於我們 聯絡資訊
Stephen Hurd wrote: >>> You can also compile in a search path. >>> >> >> Not PREFIX-safe, hence not allowed in ports unless there is no other >> solution > > Eh? It doesn't need to be an absolute path. To follow up on this for you Ronald, to compile in a PREFIX-safe relative library path, you need to pass -z origin -rpath $ORIGIN/../lib/pkgname to the linker... that is a literal $ so assuming you're using regular make files and gcc as the linker, you would add this line: LDFLAGS += -Wl,-z,origin,-rpath,\$$ORIGIN/../lib/$(PORTNAME) You need to double the $ so that make doesn't expand $ORIGIN for you and the \ is for the shell. The command line would be something like this: cc -O2 -pipe -march=pentium4 -Wl,-z,origin,-rpath,\$ORIGIN/../lib/test test.c -L. -ltest -o test You may need to fiddle around to get the literal $ in there, a strings on the compiled binary would include ``$ORIGIN/../lib/test'' (without the quotes of course). The reason you *need* to use $ORIGIN is that if you don't the relative path will be to whatever the pwd is when the process is started making them effectively random. Have fun! _______________________________________________ freebsd-chat@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-chat To unsubscribe, send any mail to "freebsd-chat-unsubscribe@freebsd.org"