Ubuntu源码编译samba
概述
本人最近研究samba的源码,但是在源码编译的时候,本以为直接config,make,make install。没想到编译过程中碰到很多麻烦,主要是各种依赖问题。
基于此,本文把samba编译的详细过程记录下来,以供再次研究借鉴。
软件环境
本文描述到的版本都是比较新的,不同的版本操作会有差异,比如早期samba用python2现在是python3,对应依赖的环境不一样的。
1、Ubuntu:版本23.10,下载地址:https://releases.ubuntu.com/23.10.1/ubuntu-23.10.1-desktop-amd64.iso?_ga=2.172672484.632513974.1697782264-614902196.1697782264
2、Samba源码:版本4.19.2,下载地址:https://download.samba.org/pub/samba/samba-4.19.2.tar.gz
3、辅助源码包nettle :版本3.9,下载地址:https://ftp.gnu.org/gnu/nettle/nettle-3.9.tar.gz
4、辅助源码包gnutls:版本3.7.10,下载地址:https://www.gnupg.org/ftp/gcrypt/gnutls/v3.7/gnutls-3.7.10.tar.xz
编译准备
ubuntu23.10是新安装的,下载的测试包放在目录:/home/shen/testCompileSamba
1、为了快速下载更新依赖包,我选择更新镜像源,如果认为有必要可以参考另外一篇文章:https://blog.csdn.net/shenweihong/article/details/133973517?spm=1001.2014.3001.5501
2、一些基本的命令
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential make gcc vim
嘿嘿,这里镜像源作用体现了,不换要二三十分钟,换了两三分钟。
3、下载解压需要的包
cd /home/shen/testCompileSamba
下载
wget https://download.samba.org/pub/samba/samba-4.19.2.tar.gz
wget https://ftp.gnu.org/gnu/nettle/nettle-3.9.tar.gz
wget https://www.gnupg.org/ftp/gcrypt/gnutls/v3.7/gnutls-3.7.10.tar.xz
解压
tar -xvf samba-4.19.2.tar.gz
tar -xvf nettle-3.9.tar.gz
tar -xvf gnutls-3.7.10.tar.xz
初步配置
进入samba源码
cd /home/shen/testCompileSamba/samba-4.19.2/
配置命令:
./configure --enable-debug --with-ads --with-systemd --with-winbind
报错
cat /home/shen/testCompileSamba/samba-4.19.2/bin/config.log,看最后几行:
安装依赖包命令:sudo apt-get install python-dev-is-python3
重新再配置
./configure --enable-debug --with-ads --with-systemd --with-winbind
cat /home/shen/testCompileSamba/samba-4.19.2/bin/config.log,看最后几行:
这是缺少程序gnutls
本人用了很多apt-get install都未能解决,很麻烦,因此就用到了源码nettle-3.9.tar.gz和gnutls-3.7.10.tar.xz
安装gnutls
进入gnutls源码
cd /home/shen/testCompileSamba/gnutls-3.7.10/
配置命令
./configure
报错:*** Libnettle 3.6 was not found.
还需要依赖nettle包
进入nettle源码
cd /home/shen/testCompileSamba/nettle-3.9
配置命令
./configure
成功
make
报错:m4 ./m4-utils.m4 ./asm.m4 config.m4 machine.m4 aes-decrypt-internal.asm >aes-decrypt-internal.s
/bin/sh: 1: m4: not found
安装依赖包命令:sudo apt-get install m4
再make
成功
查看命令 ls | grep .so
camellia-absorb.c
camellia-absorb.o
camellia-absorb.o.d
libnettle.so
少了libhogweed.so,后面用到没有会报错,还需要调整
安装依赖包命令:sudo apt-get install libgmp-dev
然后
./configure
make
ls | grep .so查看
camellia-absorb.c
camellia-absorb.o
camellia-absorb.o.d
libhogweed.so
libnettle.so
这就有了
命令sudo make install
回到gnutls源码
cd /home/shen/testCompileSamba/gnutls-3.7.10/
./configure
还是报错:*** Libnettle 3.6 was not found.
这是我当时很纠结的地方,明明已经安装了nettle,还是包这个包没有
查看/usr/local/lib64/是否有刚刚编译库文件
命令:ls /usr/local/lib64/
libhogweed.a libhogweed.so libhogweed.so.6 libhogweed.so.6.7 libnettle.a libnettle.so libnettle.so.8 libnettle.so.8.7 pkgconfig
应该没错
sudo mkdir /usr/lib/pkgconfig/
sudo ln -s /usr/local/lib64/pkgconfig/nettle.pc /usr/lib/pkgconfig/nettle.pc
sudo ln -s /usr/local/lib64/pkgconfig/hogweed.pc /usr/lib/pkgconfig/hogweed.pc
复制lib64中nettle库到lib(我偷懒全部复制):sudo cp -r /usr/local/lib64/* /usr/local/lib/
下面这几个命令是尝试的,不知道是否有必要
sudo apt-get install libcurl4-gnutls-dev
sudo apt-get install -y gnutls-bin
sudo apt-get install libffi-dev
尝试其他各种发现下面这个命令起作用
安装依赖包命令:sudo apt-get install pkg-config
继续./configure
报错
安装依赖包命令:sudo apt-get install libtasn1-6-dev
继续./configure
报错
安装依赖包命令:sudo apt-get install libunistring-dev
继续./configure
报错
这个错表示p11-kit不存在,或者版本低于0.23.1,但是我这里明明有了更新版本0.25.0,如下图
我猜可能是没有特定的版本,很久都没解决,并且不需要pkcs11,直接跳过去
配置命令改成:./configure --without-p11-kit
通过了
make
sudo make install
gnutls编译好了
继续配置samba
cd /home/shen/testCompileSamba/samba-4.19.2
./configure --enable-debug --with-ads --with-systemd --with-winbind
报错:
安装依赖包命令:sudo apt-get install liblmdb-dev
继续配置:./configure --enable-debug --with-ads --with-systemd --with-winbind
安装依赖包命令:sudo apt-get install flex
类似的后面根据提示安装依赖
sudo apt-get install bison
sudo apt-get install libgpgme11-dev
sudo apt-get install libjansson-dev
sudo apt-get install libarchive-dev
sudo apt-get install libacl1-dev
sudo apt-get install libldap2-dev
继续配置:./configure --enable-debug --with-ads --with-systemd --with-winbind
报错
安装依赖包命令:sudo apt-get -y install libparse-yapp-perl
继续配置:./configure --enable-debug --with-ads --with-systemd --with-winbind
报错
安装依赖包命令:sudo apt-get install libpam0g-dev
继续配置:./configure --enable-debug --with-ads --with-systemd --with-winbind
报错:
安装依赖包命令:sudo apt-get install libdbus-1-dev
继续配置:./configure --enable-debug --with-ads --with-systemd --with-winbind
报错:
安装依赖包命令:sudo apt-get install python3-markdown
继续配置:./configure --enable-debug --with-ads --with-systemd --with-winbind
报错:
安装依赖包命令:sudo apt-get install python3-dnspython
继续配置:./configure --enable-debug --with-ads --with-systemd --with-winbind
通过
编译
make
报错
安装依赖包命令:apt-get install libpopt-dev
再make
没有报错,后面的运行测试估计会有点麻烦,本文就介绍到这里吧。
相关文章:

Ubuntu源码编译samba
概述 本人最近研究samba的源码,但是在源码编译的时候,本以为直接config,make,make install。没想到编译过程中碰到很多麻烦,主要是各种依赖问题。 基于此,本文把samba编译的详细过程记录下来,以供再次研究借鉴。 软件…...

conda虚拟环境配置
命令行输入,conda -V 确定conda版本 创建自己的conda虚拟环境 activate 回车 conda create -n 名字 python版本号 执行命令 确认执行命令 输入y 创建完成 激活环境 conda activate 名字 进入python环境 python 退出 exit() conda deactive...

如何制作自己的数字人
如何制作自己的数字人呢?不用担心平台的使用授权,也不用担心哪一天自己自媒体被号被无故封杀,那么SadTalker将是你的首选,他是完全开源的数字人软件,现已达到Apache2的授权,完全自由的开源软件。作者自己试…...

JAVA毕业设计103—基于Java+Springboot+vue的药店管理系统(源码+数据库)
基于JavaSpringbootvue的药店管理系统(源码数据库) 一、系统介绍 本系统前后端分离 -功能: 登录、药库药品管理、统计查询、药房管理、物资管理、挂号管理、账号管理、角色管理、权限管理、登录日志管理、药品管理、药品类型管理、客人类型管理 二、所用技术 后端技术栈&a…...

LeetCode66——加一
LeetCode66——加一 题目描述: 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。 示例…...

CV计算机视觉每日开源代码Paper with code速览-2023.10.23
精华置顶 墙裂推荐!小白如何1个月系统学习CV核心知识:链接 点击CV计算机视觉,关注更多CV干货 论文已打包,点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【目标检测】Zone Evaluation: Revealing Spatial Bias i…...

C语言 sizeof 函数内部进行计算
直接看代码 #include <stdio.h> int main() {int i 2;int j;j sizeof(i i);printf("i %d, j %d", i ,j);return 0; }执行结果: 可以看到 i的值一直是没有变的, j 是int类型下 sizeof占用的大小为 4个字节,不是i的 22…...

导致爬虫无法使用的原因有哪些?
随着互联网的普及和发展,爬虫技术也越来越多地被应用到各个领域。然而,在实际使用中,爬虫可能会遇到各种问题导致无法正常工作。本文将探讨导致爬虫无法使用的原因,并给出相应的解决方法。 一、目标网站反爬虫机制 许多网站为了…...
paddlepaddle使用实践过程中的问题记录
环境背景 python:3.10.11 系统:macOS Big Sur 11.7.10 cpu:Intel Core i7 2.6GHz 内存:16G paddle版本问题 初始安装的是的MacOS cpu 2.5.1版本,在python解释器中执行import paddle时报错: ImportError:…...

MySQL数据库 #3
文章目录 一、创建表的完整语法二、约束条件1.unsigned (无符号)2. zerofill (0填充)3. default (默认值)4. not null(非空)5. unique(唯一)6. primary key &…...

XQ350441.0、XQ350641.0、XQ350441.1、XQ350641.1、XQ350441.2、XQ350641.2三位五通电磁气动阀
XQ230440、XQ230640、XQ230840、XQ231040、XQ231540二位三通气动电磁阀;XQ250440、XQ250640、XQ250840、XQ251040、XQ251540二位五通电磁气动阀;XQ240440二位四通电磁气动阀;XQ230441、XQ230641、XQ230841、XQ231041、XQ231541二位三通电磁气…...

降本增效神器?Share Creators 智能数字资产管理系统真香!
降本增效似乎是一个持续又永久的话题。尤其在今年, 显得格外的重要~ 在各行各业都受到了疫情所带来巨大冲击的背景下,降本增效对很多企业来说不再是锦上添花,而可能是一条唯一的出路。 随着市场的收缩和竞争的加剧,在更“卷”的…...

2023年中国汽车差速器需求量、竞争现状及行业市场规模分析[图]
差速器是汽车驱动系统的主要部件,它的作用就是在向两边半轴传递动力的同时,允许两边半轴以不同的转速旋转,满足两边车轮尽可能以纯滚动的形式作不等距行驶,减少轮胎与地面的摩擦。汽车差速器是驱动车轮差速转弯或复杂路面强力通过…...

【ceph】ceph集群的节点机器重启,导致磁盘的lvm消失,如何恢复呢~~满满的都是干货
本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…...

竞赛选题 深度学习人脸表情识别算法 - opencv python 机器视觉
文章目录 0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术 2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码 4 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习人脸表情识别系…...
异步为什么会造成 HTTP 队首阻塞?
一、http 协议的队首阻塞 队首阻塞,队首的事情没有处理完的时候,后面的都要等着。 1.1 HTTP1.0 的队首阻塞 对于同一个 tcp 连接,所有的 http1.0 请求放入队列中,只有前一个请求的响应收到了,然后才能发送下一个请求。http1.0 的…...
使用hibernate,报出ORA-00933_ SQL 命令未正确结束
这里分享一个很容易出错的原因,一旦涉及到切换不同的数据源,就需要修改配置文件,有时候就会忘记了修改方言,而jpa是需要设置方言的。 比如我这里就是因为从mysql切换为了使用oracle,忘记了设置对应的方言,才…...

易点易动设备管理系统:提升企业备件管理和维修效率的智能解决方案
在当今竞争激烈的商业环境中,大型生产制造企业面临着日益复杂的设备管理挑战。为了提高生产效率和降低成本,企业需要一种高效的设备管理系统。易点易动设备管理系统是一款智能化的解决方案,旨在帮助企业提升备件管理和维修效率。本文将详细介…...

新上线游戏产品需不需要防御?
游戏运营免不了遭受恶意DDoS和CC攻击,且攻击常达百G以上,攻击流量过大,超过一般服务器的基础防护能力,不少企业面对大流量攻击显得束手无策,只能选择被迫停机,其次游戏行业利润高,很容易被黑客盯…...

Linux中的开发工具(yum,vim,gcc/g++,gdb,Makefile,git)
文章目录 1. Linux软件包管理器——yumyum 语法yum 常用命令安装 yum 仓库源 2. Linux编辑器——vimvim 的五种常用模式模式切换vim 基本操作命令模式命令集(1)光标命令(2)复制粘贴命令(3)撤销与重做&#…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...