我已经构build了一个包含C / C ++代码的R包。 我现在试图在win-builder上testing这个包。 不幸的是,在00install.out返回以下错误:
* installing *source* package 'mypackage' ... ** libs running 'src/Makefile.win' ... /usr/bin/make --directory=lib/mylib/ gcc -g -Wall -fPIC -c mycode.c make[1]: gcc: Command not found make[1]: *** [mycode.o] Error 127 make: *** [mylib] Error 2 Warning: running command 'make --no-print-directory -f "Makefile.win"' had status 2 ERROR: compilation Failed for package 'mypackage' * removing 'd:/RCompile/CRANguest/R-release/lib/mypackage'
尝试使用gcc , gcc.exe和cc产生类似的结果。
因此,我根据这些指示在windows虚拟机上build立了一个testing环境。 运行R CMD INSTALL . 在这个环境中的命令行代码导致代码编译和软件包安装没有问题。 (运行R CMD build .也没有错误。)
怎么了赢得build设者,我怎样才能达到汇编呢?
有没有一种简单的方法来使gcc忽略crtbegin.o / crtend.o?
编译器有关printf()的警告:long unsigned int和uint32_t
无法升级windows 7中的MinGW
用非标准path编译glib
如何在LD_PRELOAD中使用gdb
或者更重要的是,能够在windows上构build包是否足够,无论它是否在win-builder上工作?
我的Makefile.win如下所示:
export CCOMP = gcc export CPPCOMP = c++ export ADD_CC_FLAGS = -O3 APP_DIR = ./apps/myapp liB_DIR = ./lib/mylib .PHONY: all $(APP_DIR) $(liB_DIR) all: $(APP_DIR) $(liB_DIR) $(APP_DIR) $(liB_DIR): mylib $(MAKE) --directory=$@ $(APP_DIR): $(liB_DIR) mylib mylib: $(MAKE) --directory=lib/mylib
将echo %PATH%插入到mylib目标下的make文件中:
Makefile.win:24: *** missing separator. Stop.
gdb可以自动在SIGSEGV上附加一个进程
windows上的MinGW + GCC和UTF-8字符
在* nix下有没有别的办法可以用gcc做实际的开发?
_GliBCXX_USE_CXX11_ABI,兼容GCC 4.8和ABI
格式化struct timespec
你在这里得到一个模糊的错误,因为你包含了一个文件Makefile.win 。
但make的语义,如果找到这样的文件,它将被使用…这不是你想要的。 R建立它自己的 Makefile.win ,你应该只提供一个被包含的代码片段 – 必须被称为Makevars.win 。
这是第一条规则。 第二条规则是不包含你将包含在Makefile所有材料,因为你会打破R已经带来的东西。 所有这一切都在写作R扩展,但当然可以更清楚。
我的务实建议是:拿一个你知道和喜欢的包,在win-builder中有一个可用的R build,然后修改它。 你可以在本地测试,如果你有Rtools等访问R系统。
从OP编辑 :
我需要编译依赖于几个库的可执行文件。 库代码在src/libs ,可执行代码在src/apps 。 我确保在每个子目录中运行make ,并将src/apps/Makefile为使用相对路径来获取src/libs的结果。 唯一的问题是,整个链条运行。 为此,我创建了一个具有以下结构的文件src/Makevars.win :
.PHONY: all myprogram sublib1 sublib2 all: sublib1 sublib2 myprogram myprogram: sublib1 sublib2 @(cd apps/myprogram && $(MAKE) CXX="$(CXX)" CC="$(CC)" CFLAGS="$(CFLAGS) $(CPICFLAGS)" AR="$(AR)" RANliB="$(RANliB)") sublib1: @(cd lib/sublib1 && $(MAKE) CXX="$(CXX)" CC="$(CC)" CFLAGS="$(CFLAGS) $(CPICFLAGS)" AR="$(AR)" RANliB="$(RANliB)") sublib2: @(cd lib/sublib2 && $(MAKE) CXX="$(CXX)" CC="$(CC)" CFLAGS="$(CFLAGS) $(CPICFLAGS)" AR="$(AR)" RANliB="$(RANliB)")
据我了解, Makevars.win被嵌入到R生成的动态生成的Makefile中。 所以, $(CC)实际上是引用这个隐藏的代码。
(有可能更聪明的方法来做到这一点。)
总结以上是内存溢出为你收集整理的海湾合作委员会没有find胜利build设者全部内容,希望文章能够帮你解决海湾合作委员会没有find胜利build设者所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)