小编ocs*_*tat的帖子

docker能解决C共享库不匹配的问题吗?

我正在尝试在 ubuntu (18.04) 主机上运行一些 haskell 代码,该代码是在我的笔记本电脑上编译的。

host: 4.15.0-36-generic #39-Ubuntu SMP Mon Sep 24 16:19:09 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

laptop: 4.14.74-1-MANJARO #1 SMP PREEMPT Fri Oct 5 14:16:52 UTC 2018 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found
Run Code Online (Sandbox Code Playgroud)

经过一些研究,我了解到这是因为我的笔记本电脑安装了 glibc 2.28 版本,但主机只有 libc6 2.27。

我做了一些谷歌搜索,认为也许 docker 可以解决这个问题。但是,我刚刚使用以下 Dockerfile 创建了一个 docker 映像,但它不起作用(相同的 GLIBC_2.28 错误)

FROM fpco/stack-build:lts-12.9 as builder

RUN mkdir /opt/build
COPY . /opt/build
RUN cd /opt/build && stack build 

FROM ubuntu:18.04
RUN mkdir -p /opt/myapp
WORKDIR /opt/myapp
RUN apt-get …
Run Code Online (Sandbox Code Playgroud)

linux haskell libc docker haskell-stack

7
推荐指数
1
解决办法
8330
查看次数

如何镜头到一个多态函数的记录字段?

我刚刚安装了lens库,因此我可以轻松地set在嵌套数据结构中.但是,我遇到了一个问题.这是一个演示我的问题的最小例子

以下代码无法编译:

{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TemplateHaskell #-}
import Control.Lens    

data MyRecord = MyRecord 
  { _func :: forall . a -> a
  }

makeLenses ''MyRecord

changeMyRecord :: MyRecord -> MyRecord
changeMyRecord r = r & func .~ id
Run Code Online (Sandbox Code Playgroud)

错误是No Instance for (Contravariant Identity) arising from use of 'func'.

我看了一下Contravariant,我很确定自从我做这个实例是不可能的

class Contravariant f where
  contramap :: (a -> b) -> f b -> f a
Run Code Online (Sandbox Code Playgroud)

即如果f = \x -> x …

haskell haskell-lens

3
推荐指数
1
解决办法
129
查看次数

标签 统计

haskell ×2

docker ×1

haskell-lens ×1

haskell-stack ×1

libc ×1

linux ×1