Linux下的Nana库安装和编译

首先介绍一下Nana库,Nana库是一个使用C++11开发的轻量级开源跨平台界面库。可以非常方便地开发GUI界面(作者好像是中国人。

官网地址:http://nanapro.org/zh-cn/

Github地址:https://github.com/cnjinhao/nana

官网给出安装步骤:https://github.com/qPCR4vir/nana-docs/wiki/Installation

下面讲讲我是怎么安装的

1.依赖库安装

        根据我在Ubuntu 20.04下的安装经验,Nana库的编译过程主要用到了X11、Xft、Xcursor、asound这几个库,其中asound是Nana库编译完,编译demo的时候要用的,也要装上。

sudo apt-get install libx11-dev
sudo apt-get install libxft-dev
sudo apt-get install libxcursor-dev
sudo apt install libasound2-dev

        这里分享一个小窍门,可以使用apt-file命令根据缺少的头文件查找安装的库名称,如下图所示,非常的方便。

 2.编译安装

         安装完上面的库就可以直接用nana/build/makefile下的makefile文件编译Nana库了。

sudo make
sudo make install

 3.程序编译

        程序的编译可以参考在makefile文件目录下的readme.md中的makefile格式,把NANAPATH改成你的Nana源文件所在目录,BIN改成要生成的文件名,SOURCES改成应用要用到的所有源文件名即可。

GCC     = g++
NANAPATH = [The folder of Nana C++ Library]
BIN     = [The bin file what you want to create.]
SOURCES = [The source file of your application.]

NANAINC = $(NANAPATH)/include
NANALIB = $(NANAPATH)/build/bin

INCS    = -I$(NANAINC)
LIBS    = -L$(NANALIB) -lnana -lX11 -lpthread -lrt -lXft -lpng -lasound -lfontconfig

LINKOBJ = $(SOURCES:.cpp=.o)

$(BIN): $(LINKOBJ) $(NANALIB)/libnana.a
        $(GCC) $(LINKOBJ) $(INCS) $(LIBS) -o $(BIN) -std=c++0x

.cpp.o:
        $(GCC) -g -c $< -o $@ $(INCS) -std=c++0x

$(NANALIB):
        make -f $(NANAPATH)/build/makefile/makefile

clean:
        rm -f $(LINKOBJ)

        但是我这样之后会出现以下undefined reference to `std::experimental::filesystem'的问题:

         上网搜了一下,发现原来是要链接stdc++fs库,在链接的时候加上这个库就没问题了,修改后的链接语句如下:

$(BIN): $(LINKOBJ) $(NANALIB)/libnana.a
        $(GCC) $(LINKOBJ) $(INCS) $(LIBS) -o $(BIN) -std=c++0x -lstdc++fs

        写了一个带动态进度条的小程序测试了一下,成功生成!完

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值