当前位置: 首页 > news >正文

图片网站模板下载上海百度竞价托管

图片网站模板下载,上海百度竞价托管,七台河网站制作,个人可以做网站导航的网站吗之前笔者写过一篇博文ubuntu使用LLVM官方发布的tar.xz来安装Clang编译器介绍了Ubuntu下使用官方发布的tar.xz包来安装Clang编译。官方发布的版本中也有MacOS版本的tar.xz,那MacOS应该也是可以安装的。 笔者2015款MBP笔记本,CPU是intel的,出厂…

之前笔者写过一篇博文ubuntu使用LLVM官方发布的tar.xz来安装Clang编译器介绍了Ubuntu下使用官方发布的tar.xz包来安装Clang编译。官方发布的版本中也有MacOS版本的tar.xz,那MacOS应该也是可以安装的。

笔者2015款MBP笔记本,CPU是intel的,出厂系统是MacOS10.12(Sierra),后面自己升级安装到10.13(由于只有128G硬盘,不能安装太新的系统):

在这里插入图片描述

目前的Clang编译器是9.0__cplusplus版本是201406,支持C++14,部分支持C++17,如果想使用新一点的C++标准,就需要更新编译器。

一、安装Clang编译器

LLVM官方在LLVM 15及之前是有出Intel版本的tar.xz安装包的,后面有的版本没macOS版本的,有的版本有macOS的,但是是ARM CPU的,后面19.0开始有macOS版本的了,而且ARM与Intel的都有。

在这里插入图片描述

只可惜笔者的MBP系统太老,不能安装最新版本的,只能退而求其次,安装LLVM 15.0.7,而且有Intel CPU的x86_64版本:

在这里插入图片描述
先下载clang+llvm-15.0.7-x86_64-apple-darwin21.0.tar.xz
,再使用下面的命令解压:

tar -xf clang+llvm-15.0.7-x86_64-apple-darwin21.0.tar.xz

解压后,可以将目录改名为llvm-15,然后移动到/usr/local/目录下,为了确保独立性,不弄脏/usr/local/目录,直接将整个llvm-15目录移动,而不是移动llvm-15下的子目录。

在这里插入图片描述

然后在~/.bash_profile中设置PATH,将/usr/local/llvm-15/bin添加到PATH变量中:

export PATH=/usr/local/llvm-15/bin:$PATH

二、测试、使用

1.简单测试

添加好后,新开一个终端进行简单测试,测试clang没问题:

$ clang -v
clang version 15.0.7
Target: x86_64-apple-darwin17.7.0
Thread model: posix
InstalledDir: /usr/local/llvm-15/bin

但是测试lldb就报错了:

$ lldb
dyld: Library not loaded: @rpath/liblldb.15.0.7.dylibReferenced from: /usr/local/llvm-15/bin/lldbReason: no suitable image found.  Did find:/usr/local/llvm-15/bin/../lib/liblldb.15.0.7.dylib: cannot load 'liblldb.15.0.7.dylib' (load command 0x80000034 is unknown)/usr/local/llvm-15/bin/../lib/liblldb.15.0.7.dylib: stat() failed with errno=1
Abort trap: 6

使用otool -l /usr/local/llvm-15/lib/liblldb.15.0.7.dylib指令查看:

$ otool -l /usr/local/llvm-15/lib/liblldb.15.0.7.dylib 
/usr/local/llvm-15/lib/liblldb.15.0.7.dylib:
Mach headermagic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags0xfeedfacf 16777223          3  0x00           6    31       3400 0x00910085
Load command 0cmd LC_SEGMENT_64cmdsize 872segname __TEXTvmaddr 0x0000000000000000vmsize 0x00000000067c8000fileoff 0filesize 108822528maxprot 0x00000005initprot 0x00000005nsects 10flags 0x0
Sectionsectname __text……Load command 4cmd LC_ID_DYLIBcmdsize 56name @rpath/liblldb.15.0.7.dylib (offset 24)time stamp 1 Thu Jan  1 08:00:01 1970current version 15.0.7
compatibility version 0.0.0
Load command 5cmd ?(0x80000034)cmdsize 16
Load command 6cmd ?(0x80000033)cmdsize 16
Load command 7cmd LC_SYMTABcmdsize 24symoff 119381816nsyms 180001stroff 122268616strsize 16367424
Load command 8cmd LC_DYSYMTAB

发现还真是有未知命令:cmd ?(0x80000034)cmd ?(0x80000033),暂时无法解决,就还是使用系统自带的lldb吧。

2. 使用VSCode测试

只要设置好Clang的路径在PATH变量中,打开VSCode,重新扫描工具包,即可搜索到新的Clang版本。

在这里插入图片描述

切换到Clang 15,VSCode会自动重新执行CMake命令:

在这里插入图片描述

[cmake]     FAILED: cmTC_d20cb 
[cmake]     : && /usr/local/llvm-15/bin/clang  -Wl,-search_paths_first -Wl,-headerpad_max_install_names  CMakeFiles/cmTC_d20cb.dir/testCCompiler.c.o -o cmTC_d20cb   && :
[cmake]     ld: unknown option: -platform_version
[cmake]     clang-15: error: linker command failed with exit code 1 (use -v to see invocation)
[cmake]     ninja: build stopped: subcommand failed.

无法正确执行CMake,CMake在编译简单的测试程序时,无法通过。

ld: unknown option: -platform_version提示是ld找到不到参数,原因是新版本的Clang编译器与系统的链接器ld不匹配,需要使用Clang自己的链接器lld,由于是CMake在测试编译器时报的错,那就需要在它之前设置使用lld

CMake中要设置链接器使用lld,有两种方法:

  1. 可以在cmake命令行参数中设置如下变量:
  • CMAKE_EXE_LINKER_FLAGS:设置可执行文件链接器的变量,用法:-DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld,注意大小写
  • CMAKE_SHARED_LINKER_FLAGS:设置动态链接库链接器的变量,用法:-DCMAKE_SHARED_LINKER_FLAGS=-fuse-ld=lld
  • CMAKE_LINK_LIBRARY_FLAG:设置静态链接库链接器的旗标,用法:-DCMAKE_LINK_LIBRARY_FLAG=-fuse-ld=lld
  • CMAKE_LINKER_TYPE:在3.29版本添加的新变量,用法:-DCMAKE_LINKER_TYPE=LLD,注意LLD是大写

在VSCode中需要在settings.json配置文件中设置:

"cmake.configureArgs": ["-DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld","-DCMAKE_SHARED_LINKER_FLAGS=-fuse-ld=lld","-DCMAKE_LINK_LIBRARY_FLAG=-fuse-ld=lld","-DCMAKE_LINKER_TYPE=LLD" // CMake3.29+才能使用
],
  1. CMakeLists.txt中设置
    如果是在CMakeLists.txt中设置,一定要在最顶层的CMakeLists.txtproject命令之前设置:
cmake_minimum_required(VERSION 3.25)
set(CMAKE_EXE_LINKER_FLAGS -fuse-ld=lld)
set(CMAKE_SHARED_LINKER_FLAGS -fuse-ld=lld)
set(CMAKE_LINK_LIBRARY_FLAG -fuse-ld=lld)
set(CMAKE_LINKER_TYPE LLD)
project(demo)

在这里插入图片描述

编译链接都没问题了。

3. 使用QtCreator测试

笔者在MBP上安装的是QtCreator 5.03版本,基于Qt5.15.2的:

在这里插入图片描述

但Qt的SDK是5.14.2:

在这里插入图片描述

可以先使用QtCreator的自动检测,看是否能检测到Clang15,如果不能,手动添加:

在这里插入图片描述

在Kits中克隆一个原来的配置,将下面的C/C++编译器设置为clang 15:

在这里插入图片描述

并在CMake Configuration中添加如下配置:

CMAKE_EXE_LINKER_FLAGS:STRING=-fuse-ld=lld
CMAKE_LINK_LIBRARY_FLAG:STRING=-fuse-ld=lld
CMAKE_SHARED_LINKER_FLAGS:STRING=-fuse-ld=lld

如下图所示:

在这里插入图片描述

在Qt项目中使用新的Kits编译即可。

但是笔者在设置好后,QtCreator会有一个警告:

在这里插入图片描述

cstdlib源码:

#if !defined(_LIBCPP_CXX03_LANG)
using ::at_quick_exit _LIBCPP_USING_IF_EXISTS;
using ::quick_exit _LIBCPP_USING_IF_EXISTS;
#endif
#if _LIBCPP_STD_VER > 14
using ::aligned_alloc _LIBCPP_USING_IF_EXISTS;
#endif

原因是at_quick_exitquick_exit函数在C11中添加,而std::at_quick_exitstd::quick_exit函数在C++11中添加,参见:
https://cppreference.cn/w/c/program/at_quick_exit
https://cppreference.cn/w/cpp/utility/program/at_quick_exit

aligned_alloc是在C11中添加,而std::aligned_alloc是在C++17中添加,参见:
https://cppreference.cn/w/c/memory/aligned_alloc
https://cppreference.cn/w/cpp/memory/c/aligned_alloc

笔者MacOS系统原来的C库缺少这几个函数的,可以在一个头文件中声明一下,不让QtCreator报警告:

lost.h

#ifndef LOST_H
#define LOST_H#include <_ctype.h>int at_quick_exit(void (*)());
int quick_exit(void (*)());
void *aligned_alloc(size_t alignment, size_t size);
int timespec_get(struct timespec* const time_spec,int const base
);#endif // LOST_H

然后在#include <cstdlib>之前先#include "lost.h"即可。

在这里插入图片描述
不报警告了,但是在代码中不能使用这几个函数,因为系统中没有相应的实现

如果对你有帮助,欢迎点赞收藏!

http://www.hengruixuexiao.com/news/21264.html

相关文章:

  • 搭建平台网站搜索引擎营销案例分析
  • 帮朋友做网站宁波seo快速优化公司
  • 做网站很赚钱吗青岛招聘seo
  • 物流网站建设方案总结百度竞价开户哪家好
  • 外贸新闻网站贵阳百度推广电话
  • 成都大型的做网站的公司成都网站关键词排名
  • 国内返利网站怎么做湖南优化公司
  • 深圳知名的网站公司简介樱花12e56
  • 945新开传奇网站东莞网络推广公司
  • 武汉做网站哪里便宜北京seo邢云涛
  • 网站服务器租用平台高级搜索
  • 网站建设vr百度百科官网入口
  • 网站视频做栏目一般一期多钱seo教程 百度网盘
  • 怎么使用织梦做网站怎么做网络广告推广
  • 温州seo优化福州短视频seo网红
  • 哪些公司网站做的很好软件开发培训学校
  • 免费网站建设360网站推广
  • 济南网站制作公司报价百度站长工具添加不了站点
  • 怎样做免费的网站优化推广联盟
  • 网页设计好看的模板搜索引擎优化指南
  • 做国外网站要注意什么重庆seo排名
  • 网站设计内容windows优化大师是官方的吗
  • 做网站哪个部分seo的范畴是什么
  • 四川大学微服务官网枣庄网络推广seo
  • 网站建设阶段推广策略济南网络优化网址
  • 私自建设网站凡科建站手机版登录
  • wordpress分类设置主题杭州哪家seo公司好
  • 一对一做的好的网站指数是什么
  • 迪拜哪个网站是做色情的企业优化推广
  • 网站开发所需开发环境哪个公司网站设计好