免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2132 | 回复: 7
打印 上一主题 下一主题

求在线编译方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-03-09 18:58 |只看该作者 |倒序浏览
有没有好办法可以将程序运行中生成的代码进行编译? 我当前是system("gcc ...")做的,求专业点的方法!

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
2 [报告]
发表于 2013-03-09 20:28 |只看该作者
回复 1# fenghw8088


    不这样,难道你想自己做编译器?
    fork+exec换汤不换药

论坛徽章:
0
3 [报告]
发表于 2013-03-11 11:33 |只看该作者
回复 2# cjaizss


做应用,哪敢做编译器呀。
我是
sprintf(cmd, "gcc -shared -o libexpr%d.so libpub.so midexpr%d.c", mine,mine);
fp = popen(cmd, "r");
本质上也是fork,exec

多个线程同时执行有问题,感觉是同时在执行popen时会出错,而且sh成为僵尸进程。
在调用之前signal(SIGCHLD, SIG_IGN);也不行, popen之间报错返回。

如果gcc有API接口就好了

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
4 [报告]
发表于 2013-03-11 20:26 |只看该作者
fenghw8088 发表于 2013-03-11 11:33
回复 2# cjaizss

可能吗?
linux-s3hu:/tmp/test_fork # cat 1.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
        FILE*f;
        int c;
        f=popen("gcc 2.c -o 2","r");
        while((c=fgetc(f))!=EOF)
                printf("%c",(char)c);
        fclose(f);
        system("./2");
        return 0;
}
linux-s3hu:/tmp/test_fork # cat 2.c
#include <stdio.h>
int main()
{
        printf("Hello,world\n");
        return 0;
}

linux-s3hu:/tmp/test_fork # gcc 1.c -o 1
linux-s3hu:/tmp/test_fork # ./1
Hello,world
不挺好吗?

论坛徽章:
0
5 [报告]
发表于 2013-03-12 08:17 |只看该作者
回复 5# cjaizss

谢谢!还专门写程序验证了一下!
是挺好的,如果并发调用gcc,会偶尔出错,原因不详。
如果能不用popen不就更好了么!
   

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
6 [报告]
发表于 2013-03-12 09:51 |只看该作者
fenghw8088 发表于 2013-03-12 08:17
回复 5# cjaizss

谢谢!还专门写程序验证了一下!

你程序中的标准出错是什么?

论坛徽章:
0
7 [报告]
发表于 2013-03-12 12:08 |只看该作者
回复 7# cjaizss


strerror(errno)输出Bad file descriptor
我不知道出错的真正原因

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
8 [报告]
发表于 2013-03-12 12:15 |只看该作者
fenghw8088 发表于 2013-03-12 12:08
回复 7# cjaizss

整个代码你都不给出来,谁知道呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP