Chinaunix

标题: freebsd下可以编译的时候连接一个linux下编译出来的库么?在线等候。。 [打印本页]

作者: hmilymb    时间: 2009-07-16 10:04
标题: freebsd下可以编译的时候连接一个linux下编译出来的库么?在线等候。。
有个问题请问大家。

freebsd下可以编译的时候调用一个linux下编译出来的库么?

我知道freebsd可以运行的时候调用linux下的动态库。
但是不知道编译的时候嗲用linux下的库可以么?

比如
libaxx.so libbxx.a是linux编译出来的,
现在我在freebsd 下编译
g++ -o a a.cpp -laxx -lbxx
作者: phoenixson    时间: 2009-07-16 11:47
原帖由 hmilymb 于 2009-7-16 10:04 发表
有个问题请问大家。

freebsd下可以编译的时候调用一个linux下编译出来的库么?

我知道freebsd可以运行的时候调用linux下的动态库。
但是不知道编译的时候嗲用linux下的库可以么?

比如
libaxx.so li ...

保证都是elf32,或者同是elf64的,应该是可以的,所以说从开源的linux port到freebsd这个过程并算太不复杂
作者: hmilymb    时间: 2009-07-16 14:23
谢谢楼上。。

我觉得是不是属于交叉编译范畴了,freebsd代码中调用一个linux人家的库,看来是不可以了,除非都是都是编译成linux下运行的,然后再到freebsd模拟linux环境。。
作者: pagx    时间: 2009-07-16 16:12
这个要分情况讨论了。
1、ARCH要相同。
2、不能使用系统调用。
3、对于.o文件,需要连接系统提供的函数,要求数据结构一致。

同样是386下, 纯粹加密解密,没有使用系统调用的话,那么生成的.o甚至.so是可以用的。
但是估计会存在难以发现的问题。

符合这些条件的就可以互用了。就像mplayer可以调用win32的DLL一样。
作者: phoenixson    时间: 2009-07-16 17:30
原帖由 pagx 于 2009-7-16 16:12 发表
这个要分情况讨论了。
1、ARCH要相同。
2、不能使用系统调用。
3、对于.o文件,需要连接系统提供的函数,要求数据结构一致。

同样是386下, 纯粹加密解密,没有使用系统调用的话,那么生成的.o甚至.so是可 ...

一般来说,不直接和内核打交到的,也就是和内核无关的,这个是个前提
作者: 挪几步呀    时间: 2009-07-19 23:07
路过 顶了。。。
作者: langue    时间: 2009-07-20 08:45
要么全部编译成 Linux 的二进制,用管道来交互?
作者: phoenixson    时间: 2009-07-20 10:24
原帖由 langue 于 2009-7-20 08:45 发表
要么全部编译成 Linux 的二进制,用管道来交互?

格式上来说,都编译成elf的首先,他们之间的不同,仅仅是他们对库和内核的依赖不同,尤其是内核




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2