如何使用automake

51单片机独立按键控制LED(二) 对于机械开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开,所以在开关闭合及断开的瞬间会伴随一连串的抖动。独立按键控制LED显示二进制。独立按键控制LED灯亮灭。独立按键控制LED状态。独立按键控制LED移位。 阅读详情

如何使用automake


  • 安装(略)

  • 使用步骤

    • autoscan then rename as configure.ac

      这一步主要是用来扫描工程文件夹下的代码文件,生成configure.scan。这个文件中包含了能够自动搜索到的文件(例如.c文件,还有系统.h文件)。此外,生成的configure.scan文件中还会自动引入一个config.h文件,这里可以定义编译时需要的各种宏。如果不需要的话请在configure.scan中注释掉

    • aclocal

      这一步用来生成aclocal.m4文件记载编译所用的宏(叫做m4宏),生成的根据是config.h的记载和系统平台的默认已有的宏。

    • autoconf

      根据configure.ac(或者是configure.in)生成configure文件

    • CreateMakefile.am && automake

      根据Makefile.am生成Makefile.in文件

    • ./configure

      生成Makefiel

    • make&& make install

      编译安装

  • 总结

    用数字和字母概括主要步骤:a e a a c a

    以autoscan开始,编辑(edit)configure.scan文件(重命名和添加删除内容),中间运行acloal和autoconf生成configure文件,创建(create)Makefile.am文件,用automake生成Makefile.in,最后编译。

  • 实际应用

    对于实际项目,会着重编写如下两种文件:configure.ac和Makefile.am

    之所以说“种”是因为Makefile.am文件可能会有多个,每一个存放代码的路径下都会有一个Makefile.am。

    configure.ac和Makefile.am会在代码中保留,再过程中生成的文件则需要删除掉,保持代码包的干净。为了使用方便,一般会有类似与autogen.sh这样的可执行脚本,用来代替手动输入命令,如:

    aclocal
    libtoolize--copy -f
    autoconf
    automake--add-missing --copy --foreign

  • 参考实例

    configure.ac:

    AC_INIT([mytest], [1.0.0], [haha@gogo.com])
    AM_INIT_AUTOMAKE([-Wall -Werror foreign])
    
    # Checks for programs.
    AC_PROG_CC
    
    # Checks for libraries.
    #PKG_CHECK_MODULES(PULSE, libpulse)
    #AC_SUBST(PULSE_LIBS)
    #AC_SUBST(PULSE_CFLAGS)
    
    # Checks for header files.
    AC_HEADER_STDC
    AC_CHECK_HEADERS([fcntl.h memory.h stdlib.h string.h sys/time.h unistd.h errno.h sys/types.h sys/stat.h])
    AC_CHECK_HEADERS([pulse/pulseaudio.h], [], [AC_MSG_FAILURE([*** pulseaudio development header file not found.])]) 
    
    # Configure the Makefiles
    AC_CONFIG_FILES([
        Makefile
        src/Makefile
        mysub/src/Makefile
    ])
    AC_OUTPUT
    

          Makefile.am(作为子目录的索引的情况):

SUBDIRS = src \
          mysub/src

             Makefile.am  (在代码目录下组织编译二进制的情况):

mytest_PROGRAMS = mybin

mybin_SOURCES = mybin_simple.c
mybin_testsuite_CFLAGS = $(OTHERLIB_CFLAGS)
mybin_testsuite_LDADD = $(OTHERLIB_LIBS)

mytest_PROGRAMS += my_another_bin
my_another_bin_SOURCES = mybin2.c
my_another_bin_CFLAGS = $(PLAYER_CFLAGS) \
                        $(GLIB_CFLAGS)				 
my_another_bin_LDADD = $(PLAYER_LIBS) \
                       $(GLIB_LIBS)


mytestdir = /opt/apathname/tool

























基于 Verilog 的经典数字电路设计(10)三态门 三态门(Triple-State Gate)亦称 “三态输出门”、“三态门输出电路”,是一种重要的总线接口电路,具有高电平、低电平和高阻抗三种输出状态的门电路,不过我们通常在设计中比较少见。   三态指其输出既可以是一般二值逻辑电路,即正常的高电平(逻辑 1)或低电平(逻辑 0),又可以保持特有的高阻抗状态,高阻态相当于隔断状态(电阻很大,相当于开路)。 阅读详情

相关推荐

Eureka自我保护机制

Eureka自我保护机制 默认情况下,当eureka server在一定时间内没有收到实例的心跳,便会把该实例从注册表中删除(默认是90秒),但是,如果短时间内丢失大量的实例心跳,便会触发eureka server的自我保护机制,比如在开发测试时,需要频繁地重启微服务实例,但是我们很少会把eureka server一起重启(因为在开发过程中不会修改eureka注册中心),当一分钟内收到的心跳数大量减少时,会触发该保护机制。可以在eureka管理界面看到Renews threshold和Renews(last

Soul_Ming的博客 543

运用Autoconf和Automake生成Makefile的学习之路

前言: 这次task,我大概用了4天的时间去完成。四天的时间内,我不停地去查资料,不停的去做小Demo,不停的总结,终于做完了这次的作业。下面的内容记录了我做这次Makefile作业的学习之路。 一、相关概念的介绍 什么是Makefile?怎么书写Makefile?竟然有工具可以自动生成Makefile?怎么生成啊?开始的时候,我有这么多疑问,所以,必须得先把...

weixin_34119545的博客 726

Fedora 41上安装钉钉7.6.25,我踩过的那些依赖坑和最终解决方案

本文详细记录了在Fedora 41上安装钉钉7.6.25版本的全过程,包括解决依赖问题、转换deb包为rpm格式、处理libm.so.6错误等关键步骤。通过分享这些实用技巧和最终解决方案,帮助Linux用户顺利在Fedora系统上运行钉钉客户端,提升工作效率。

weixin_30485379的博客 206

automake创建Makefile

autoconf/automake主要用于创建makefile,本文主要介绍一下automake的简单用法。 Ubuntu下安装automake: sudo apt-get install automake 即可安装automake的相关工具。 使用automake主要会用到aclocal、autoscan、autoconf、autoheader和automake这几个命令。...

weixin_30319097的博客 898

基于微信小程序的垃圾分类系统,附源码

垃圾分类小程序管理员功能有个人中心,管理员管理,意见反馈管理,视频类型管理,垃圾类型管理,新闻类型管理,论坛信息管理,环保视频管理,环保知识管理,垃圾信息管理,环保新闻管理,用户管理,知识问答试卷管理,试题管理,测试管理,轮播图管理。用户可以在微信小程序上面注册登录,查看各种环保信息和垃圾信息,还可以参加知识问答等操作。垃圾分类小程序的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。

Java徐师兄的博客 2076

USB接口ESD防护设计实战:从金属外壳到信号线的完整避坑指南

本文深入探讨USB接口ESD防护设计的实战要点,聚焦金属外壳作为ESD能量泄放关键通道的处理策略。文章详细解析了从外壳接地路径控制、信号线TVS管选型与布局,到PCB分区及电源线滤波等完整设计流程,旨在帮助硬件工程师构建系统级防护,避免常见设计误区,确保产品通过严苛的静电测试。

k8l9m0n的博客 481

教你如何使用automake生成Makefile文件

引言 总所周知,Makefile主要用来组织源码的编译,其语法在此不再迭述。经分析可发现,源码的组织结构通常有以下3种形式: ①、flat:所有文件都处在同一目录 所有源文件、头文件以及相关的库文件都处在当前的目录中,不存在任何子目录。 ②、shallow:主要源代码处在顶层目录,其他各部分处在子目录 主要源文件在当前目录中,而其它一些实现各部分功能的源文件位于各自不

华的专栏 1569

适航规章、标准,书籍资料下载汇总(增加DO-297 IMA)

从事IMA平台适航工作的朋友看过来,DO-297英文版PDF可以下载了!更新日志:2024-9-28:初版。2024-10-21:增加DO-330英文版PDF下载,后台回复关键词”330“获取下载链接。2024-10-30:增加DO-160G中文版(非机翻)和英文版PDF下载,后台回复关键词”160“获取下载链接。2024-11-10:增加DO-297英文版PDF下载,后台回复关键词”297“获取下载链接。以下是一些收集到的适航相关的资料,分享给大家。

qq_41854911的博客 1578

Automake使用说明

编译相关索引:https://blog.youkuaiyun.com/knowledgebao/article/details/84973055 官网:http://www.gnu.org/software/automake/#introduction 官网帮助文档:http://www.gnu.org/software/automake/manual/automake.html automake是一个...

knowledgebao的博客 1543

用 SAP Fiori Launchpad Content Manager 做目录传输:把 Catalog 变更稳稳送到目标系统

摘要:SAP Fiori项目中,目录传输是确保应用一致交付的关键环节。开发团队常遇到目录在不同系统/客户端间不一致的问题,核心在于理解Launchpad内容管理的两种作用域:系统级(/UI2/FLPCM_CONF)使用workbench请求跨系统传输,客户端级(/UI2/FLPCM_CUST)通过customizing请求按SCC4设置传输。混淆作用域会导致目录分叉,如系统级目录被客户端本地修改后形成独立副本。官方推荐使用Content Manager而非过时的Launchpad Designer,并强调手

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 105

Android 13.0 SystemUI下拉状态栏背景增加高斯模糊背景

在13.0的产品开发中,发现现在很多产品都是高斯模糊背景的,这种高斯模糊背景看起来效果很不错,产品开发需要SystemUI下拉状态栏背景也是高斯模糊背景,所以就要来实现下拉状态栏高斯模糊背景

安卓兼职framework和app工程师的博客 2670

automake 使用指南

在构建大型的C/C++项目时,往往需要借助Makefile. 然而手动编写makefile是相当复杂的,这一点在程序需要跨平台的时候表现地更为明显。在此背景下,我们需要借助于一些自动化的工具来生成Makefile和configure。本文主要介绍autoconf, automake等自动化工具,默认读者已经具备linux shell脚本和makefile的基础知识。1. 工具准备autoconf,

河西无名式 4980

msfvenom制作windows/linux/android/ios木马

msfvenom选项如下 -p, --payload<payload> 指定 payload(攻击荷载)。如果使用自定义payload,请使用'-'或者stdin指定。 -l, --list [module_typel列出指定模块的所有可用资源。模块类型包括:payloads, encoders, nops, all -n, --nopsled <length>为payload预先指定一个NOP滑动长度。 -f, --format <format>指定输出格式(使

Cwillchris的博客 2734

autoMake工具使用

1、ac文件总是以AC_INIT开头,以AC_OUTPUT结尾。# 2、AC_INIT()中分别的是: 软件包的名字,版本,作者的联系方式(一般是Email)# 3、添加一行AM_INIT_AUTOMAKE(),里面填入: 程序名字,版本号。# 4、AC_CONFIG_SRCDIR宏用来侦测所指定的源码文件是否存在,来确定源码目录的有效性。# 5、AC_CONFIG_HEADER宏用于生成config.h文件,以便autoheader使用。

m0_71782480的博客 743

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

automake 工具使用

最近使用了automake 基本上搞定了,总结一下使用方法。

一个健忘症患者的记忆备份 1420

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

automake使用

automake使用 &nbsp; antuomake 流程图: http://blog.youkuaiyun.com/houwei544/article/details/8185916 这个教程不错 https://www.ibm.com/developerworks/cn/linux/l-makefile/使用antuomake工具方法: 以程序add.c为例:准备条件:先makedir一个目录,把需...

bingyu的博客 1663

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Ubuntu下automake工具的使用

刚看了automake工具的使用 ,还挺不错 ,在源文件较多时,自己动手写makefile确实显得不太好,不过makefile规则还是要会的 。下面总结一下自己的学习体会 ,以免将来忘了,可以拿来看看,希望大家赐教,本人水平也不咋地(《===》), 就以最简单的程序hello word为例子 ,即有hello.c hello.h两个文件。 1,首先是安装automake工具,用apt-get

Rain Diao的博客 6390

使用automake编译程序

使用autoconf、automake编译符合自由软件管理的程序

linzx0403的专栏 874

automake使用实例

.soconfigure.ac# -*- Autoconf -*- # Process this file with autoconf to produce a configure script.AC_PREREQ([2.69]) AC_INIT([FULL-PACKAGE-NAME], [VERSION],

小饼仙子的专栏 782

Automake的使用

进入到你的源码目录 $ cd src $ ls main.c cat main.c # 代码如下: #include <stdio.h> int main(int argc, char** argv){ printf("Hello, Auto Makefile!\n"); return 0; } 开始使用Automake了 执行autoscan $ autoscan $ ls autoscan.log configure.scan main.c 复制

816

automake 使用库文件

**************************************** automake 使用库文件 **************************************** -------------------- 1. 准备素材. -------------------- a. mkdir hello; //创建hello 目录 b. cd hello; mkd...

hjjdebug的专栏 1780

使用Automake 创建和使用静态库

使用Automake 创建和使用静态库 1. 目录结构如下: example |——src 目录(存放源代码文件) |——hello.c |——lib 目录(存放用来生成库的文件) |——test.c 用来生成静态库libhello.a |——includ...

banwh的博客 636

automake的使用

automake生成makefile文件 1、编译参考 参考链接:https://blog.youkuaiyun.com/lee244868149/article/details/42241061(里面存在部分问题,所以参考后面的部分) 链接:(编译文件的生成和文件的修改参考)https://blog.youkuaiyun.com/vevenlcf/article/details/9411109?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160242248819

Eric Long的博客 198

automake安装及使用

/configure 生成 Makefile文件;不成功的话执行 autoreconf -i 之后再重新执行 ./configure。然后将configure.scan 修改为 configure.ac。执行 autoconf 生成 configure 文件。编写Makefile.am文件。首先执行 autoscan。

qq_44861043的博客 2225

autoconf与automake使用简解

文章目录总结1. 安装automake,创建hello.c文件2. 使用autoscan自动检查hello.c编译所需的文件等3. 执行aclocal,生成aclocal.m4 配置文件4. 执行autoconf,生成configure文件5. 执行autoheader,生成config.h.in6. 创建Makefile.am文件,写入相关内容7. 根据实际情况创建常用文档文件8. 执行automake,生成Makefile.in9. 执行./configure生成最终的Makefile10. 运行mak

熹微橙光的博客 1357

automake 的使用(一)

我的实验环境如下: 1:autoconf (GNU Autoconf) 2.69 2:automake (GNU automake) 1.16.1 首先创建一个工程目录,并写一个测试程序,如下所示: qczl@DESKTOP-HP-ZHAN:automake$ ls main.c qczl@DESKTOP-HP-ZHAN:automake$ cat main.c #include <stdio.h> #include <string.h> ...

QCZL_CC的博客 969
上一篇: RPM使用
下一篇: Android平台上抓包
ltcappui
博客等级 码龄19年 5粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值