您当前的位置: 首页 >  windows
  • 1浏览

    0关注

    483博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Paddle在windows10+vs2019上的源码编译(失败)

高精度计算机视觉 发布时间:2022-03-19 13:49:35 ,浏览量:1

最后结果:启动vs2019开始编译,无论选择release版本,还是debug版本,最后都会报错,

LNK1248 映像大小(AADA9000)超过允许的最大大小(80000000)

下面记录一下过程,目前没时间修改,如果后续编译成功了,我再来更新!

先下载paddle到本地(我的地址是D:/open/)

git clone -b release/2.2 --recursive  https://github.com/PaddlePaddle/Paddle.git

我的系统配置:windows10 + cuda11.5 + vs2019, 使用x64,

然后cmake-gui走起,

几个Configure + 1次Generator后,生成了paddle.sln解决方案。

编译时碰到几个问题的说明:

(1) google extern_protobuf项目,

https://github.com/PaddlePaddle/Paddle/issues/28391

具有类型“const google::protobuf::compiler::java::anonymous-namespace'::FieldDescriptorCompare”的表达式会丢失一些 const-volatile 限定符以调用“bool google::protobuf::compiler::java::anonymous-namespace'::FieldDescriptorCompare::operator ()(const google::protobuf::FieldDescriptor *,const google::protobuf::FieldDescriptor *)”

解决办法,

songbaoming commented on Aug 18, 2021

这个问题有两种解决方案:

  1. 修改项目路径下文件 Paddle\build\third_party\protobuf\src\extern_protobuf\src\google\protobuf\compiler\java\java_file.cc 内容:
68  bool operator ()(const FieldDescriptor* f1, const FieldDescriptor* f2) {

为:

68  bool operator ()(const FieldDescriptor* f1, const FieldDescriptor* f2) const {
  1. 切换 extern_protobuf 到 01a05a53f40ca2ac5f0af10c6cc0810bee39b792
cd Paddle\build\third_party\protobuf\src\extern_protobuf
git checkout 01a05a53f40ca2ac5f0af10c6cc0810bee39b792 --

(2) std::max冲突

错误(活动)    E0040    应输入标识符    matmul_v2_op    D:\open\Paddle\paddle\fluid\operators\matmul_v2_op.cc    80   

 这个是由该死的std::max 和微软自定义的#define max 冲突引起的,微软在minwindef.h中定义了这个东西, #define max(a,b)            (((a) > (b)) ? (a) : (b)) 如果包含(windows.h)这个头文件的话,就会冲突;

解决办法,

添加编译选项#define NOMINMAX,避开微软的自定义。

做法就是直接在matmul_v2_op这个项目上添加预编译参数NOMINMAX。

(3)Debug-->glog.lib找不到(当然,最后Debug版本无法编译成功是因为库大小问题,不是这个)

严重性    代码    说明    项目    文件    行    禁止显示状态 错误    LNK1104    无法打开文件“..\..\..\third_party\install\glog\lib\glog.lib”    op_function_generator    D:\open\Paddle\dev\paddle\fluid\pybind\LINK    1     这个错误明显是找不到库,这是因为我这里选的是Debug编译,而此时生成的是glogd.lib,而不是glog.lib。

悲催的vs2019在链接->附加依赖项中因为字数限制,已经没法改。所以只好用词本打开,

D:\open\Paddle\dev\paddle\fluid\pybind\op_function_generator.vcxproj

然后找到Debug那个项目

再找到下面了子条款glog.lib(貌似有两条重复的,可删除掉其中一条),把它改成glogd.lib就OK了。

同样还需要修改的地方有:

gflags_static.lib  --> gflags_static_debug.lib

当然,另一个办法就是找到glog这样的项目,无论是debug还是release统一都生成glog.lib这样的库名称就可以了。

本文结束

关注
打赏
1661664439
查看更多评论
立即登录/注册

微信扫码登录

0.0399s