论坛首页 综合技术论坛

为何修改pre_loaded下的prim_inet.erl之后重新编译没有生效?

浏览 2625 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-06-05  
小弟正在写一个Raw Socket驱动 LIB和C文件都改完了,

但是修改 prim_inet.erl 之后,重新编译发现没有生效

编译步骤就是

./configure
make
make install

改了好几遍,都没有用处

然后将 prim_inet.beam 删掉

socket 接口居然一样能跑

是否 pre_loaded 中的 beam 文件是否被编译成了一个.so文件?

那该如何修改 pre_loaded 中的 .erl 文件呢
   发表时间:2009-06-05  
不是这么改的 prim_inet.erl是个preload模块 系统编译的时候是把prim_inet.erl编译成prim_inet.beam,然后把prim_inet.beam搞成preload.c的一个数组,最后和系统的其他部分形成整体。 所以你要改 必须在 erts/preloaded/src目录下改,然后编译出来的东西要放在erts/preloaded/ebin下, 再删除掉erts/emulator/i686-pc-linux-gnu/preload.c这时候
LANG=C /usr/bin/perl utils/make_preload -old /root/otp_src_R13B/erts/preloaded/ebin/otp_ring0.beam /root/otp_src_R13B/erts/preloaded/ebin/init.beam /root/otp_src_R13B/erts/preloaded/ebin/prim_inet.beam /root/otp_src_R13B/erts/preloaded/ebin/prim_file.beam /root/otp_src_R13B/erts/preloaded/ebin/zlib.beam /root/otp_src_R13B/erts/preloaded/ebin/prim_zip.beam /root/otp_src_R13B/erts/preloaded/ebin/erl_prim_loader.beam /root/otp_src_R13B/erts/preloaded/ebin/erlang.beam > i686-pc-linux-gnu/preload.c

系统会重新生成preload.c, 我说明白了吗?

0 请登录后投票
   发表时间:2009-06-07  
听明白了,非常感谢
0 请登录后投票
   发表时间:2009-08-18  
突然发现 make preloaded 
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics