2013-03-20

今天是到新公司的第一天,有很多不适的地方,也有很多惊喜。

下午和我的mentor聊了一下,发现要做的和我的想法有很多不匹配的地方,都有想走人的想法了。只是想,这样走了不太像我的风格啊。

新公司还是很高效的,不一会儿我的manager和manager的manager马上就和我交流了,解答我心中的疑虑。公司还是很重视员工的,很人性化。

manager说的没错,任何东西不去深入不能了解它的本质的。

虽然面前有很多的困难,但是觉得新公司还是有很多吸引我的地方,我想我会一直走下去。

一、综合实战—使用极轴追踪方式绘制信号灯 实战目标:利用对象捕捉追踪和极轴追踪功能创建信号灯图形 技术要点:结合两种追踪方式实现精确绘图,适用于工程制图中需要精确定位的场景 1. 切换至AutoCAD 操作步骤: 启动AutoCAD 2016软件 打开随书光盘中的素材文件 确认工作空间为"草图与注释"模式 2. 绘图设置 1)草图设置对话框 打开方式:通过"工具→绘图设置"菜单命令 功能定位:该对话框包含捕捉、追踪等核心绘图辅助功能设置 2)对象捕捉设置 关键配置: 启用对象捕捉(F3快捷键) 启用对象捕捉追踪(F11快捷键) 勾选端点、中心、圆心、象限点等常用捕捉模式 追踪原理:命令执行时悬停光标可显示追踪矢量,再次悬停可停止追踪 3)极轴追踪设置 参数设置: 启用极轴追踪功能 设置角度增量为45度 确认后退出对话框 3. 绘制信号灯 1)绘制圆形 执行命令:"绘图→圆→圆心、半径"命令 绘制过程: 使用对象捕捉追踪定位矩形中心作为圆心 输入半径值30并按Enter确认 通过象限点捕捉确保圆形位置准确 2)绘制直线 操作要点: 选择"绘图→直线"命令 捕捉矩形上边中点作为起点 捕捉圆的上象限点作为终点 按Enter结束当前直线命令 重复技巧: 按Enter可重复最近使用的直线命令 通过圆心捕捉和极轴追踪绘制放射状直线 最终形成完整的信号灯指示图案 3)完成绘制 验证要点: 检查所有直线是否准确连接圆心和象限点 确认极轴追踪的45度增量是否体现 保存绘图文件(快捷键Ctrl+S)
#!/bin/make # THIS IS AN UNPUBLISHED WORK CONTAINING D2 TECHNOLOGIES, INC. CONFIDENTIAL # AND PROPRIETARY INFORMATION. IF PUBLICATION OCCURS, THE FOLLOWING NOTICE # APPLIES: "COPYRIGHT 2004-2009 D2 TECHNOLOGIES, INC. ALL RIGHTS RESERVED" # # $D2Tech$ $Rev: 20158 $ $Date: 2013-03-20 23:33:08 -0700 (Wed, 20 Mar 2013) $ # # # Do not modify this Makefile # # Note always use forward slashes for pathnames other than executables # The BSP_VPORT_ROOT variable can be set in the environment to override # the default location for the BSP toolchain. ifndef BSP_VPORT_TOOL_ROOT export BSPBASE := \ $(BASE_DIR)/../openwrt-21.02 export STAGING_DIR := $(BSPBASE)/staging_dir export BSP_VPORT_TOOL_ROOT := \ $(STAGING_DIR)/toolchain-aarch64_cortex-a53_gcc-8.4.0_musl/bin endif export BSP_VPORT_KERNEL_ROOT := \ $(BSPBASE)/build_dir/target-aarch64-openwrt-linux_musl/linux-mediatek_mt7986/linux-5.4.211 export KERNEL_CONFIG := \ $(BSP_VPORT_KERNEL_ROOT)/include ifndef BSP_VPORT_SHARED_LIB export BSP_VPORT_SHARED_LIB := endif ifndef BSP_VPORT_LIB_ROOT export BSP_VPORT_LIB_ROOT := \ $(STAGING_DIR)/toolchain-aarch64_cortex-a53_gcc-8.4.0_musl/lib endif export DSP_MODULE := VTSP export OSAL_OS_DEFINE := OSAL export OS_DIR := kernel.org-5.4 export OS_MINOR := x export OS_CLIB_DIR := musl export CORE_DIR := arch/ac5336 export VPORT_OS := linux_pc export VPORT_OS_VER := 26 export ARCH := arm64 export OS_INCLUDE_DIRS := \ $(STAGING_DIR)/toolchain-aarch64_cortex-a53_gcc-8.4.0_musl/lib/gcc/aarch64-openwrt-linux-musl/8.4.0/include export OS_LIBS := c pthread resolv asound export OS_OTHER_LIB_DIR := \ $(STAGING_DIR)/target-aarch64-openwrt-linux_musl/usr/lib export CCDEFINES := \ -DCPU=ARM7 \ -DTOOL_FAMILY=GNU \ -DTOOL=$(PLATFORM) \ $(addprefix -D,$(OSAL_OS_DEFINE)) \ $(SYSTEM_CFLAGS) export TOOLS := $(BSP_VPORT_TOOL_ROOT)/aarch64-openwrt-linux- export CC := $(TOOLS)gcc export LD := $(TOOLS)ld export CXX := $(TOOLS)g++ export AR := $(TOOLS)ar export AS := $(TOOLS)as export OBJCOPY := $(TOOLS)objcopy export STRIP := $(TOOLS)strip export OBJDUMP := $(TOOLS)objdump export ENDIAN := LITTLE_ENDIAN export LDFLAGS := $(LDFLAGS) export ALL_CFLAGS := \ $(DEFAULT_CFLAGS_GNU) \ $(CCDEFINES) \ -D__KERNEL__ \ -nostdinc \ -mlittle-endian \ -Wall \ -Wundef \ -Wstrict-prototypes \ -Wno-trigraphs \ -fno-strict-aliasing \ -fno-common \ -Wno-format-security \ -std=gnu89 \ -fno-PIE \ -fno-dwarf2-cfi-asm \ -fno-ipa-sra \ -funwind-tables \ -fno-delete-null-pointer-checks\ -Wno-maybe-uninitialized \ -O2 \ --param=allow-store-data-races=0 \ -Wframe-larger-than=4096 \ -Wno-unused-but-set-variable \ -fomit-frame-pointer \ -fno-var-tracking-assignments \ -Wdeclaration-after-statement \ -Wno-pointer-sign \ -fno-strict-overflow \ -Werror=implicit-int \ -Werror=strict-prototypes \ -Werror=date-time \ -fconserve-stack \ -fsigned-char \ -L$(BSP_VPORT_LIB_ROOT) #-Werror-implicit-function-declaration \ export CDEFINES_ADD_FOR_LKM := \ -DMODULE \ -D__KERNEL__ \ -DOSAL_LKM \ -DOSAL_LKM_$(VPORT_OS_VER) \ -isystem $(OS_INCLUDE_DIRS) \ -isystem $(BSP_VPORT_KERNEL_ROOT)/arch/arm64/include \ -isystem $(BSP_VPORT_KERNEL_ROOT)/arch/arm64/include/generated/uapi \ -isystem $(BSP_VPORT_KERNEL_ROOT)/arch/arm64/include/generated \ -isystem $(BSP_VPORT_KERNEL_ROOT)/include \ -isystem $(BSP_VPORT_KERNEL_ROOT)/arch/arm64/include/uapi \ -isystem $(BSP_VPORT_KERNEL_ROOT)/include/uapi \ -isystem $(BSP_VPORT_KERNEL_ROOT)/include/generated/uapi \ -include $(BSP_VPORT_KERNEL_ROOT)/include/linux/kconfig.h \ -include $(BSP_VPORT_KERNEL_ROOT)/include/generated/autoconf.h \ -D__LINUX_ARM_ARCH__=7 export CFLAGS_ADD_FOR_LKM := \ -funwind-tables \ -Uarm \ -Wno-format-security \ -fno-strict-aliasing \ export CDEFINES_ADD_FOR_USERLAND := \ -DOSAL_PTHREADS \ -isystem $(STAGING_DIR)/toolchain-aarch64_cortex-a53_gcc-8.4.0_musl/include/ \ -isystem $(STAGING_DIR)/toolchain-aarch64_cortex-a53_gcc-8.4.0_musl/include/linux/ \ -isystem $(STAGING_DIR)/target-aarch64-openwrt-linux_musl/usr/include \ -D__LINUX_ARM_ARCH__=7 \ export CFLAGS_ADD_FOR_USERLAND := \ -fPIC \ -pipe \ -fno-caller-saves \ -fhonour-copts \ -Wno-error=unused-but-set-variable \ -Wno-error=unused-result \ -Wl,-z,now \ -Wl,-z,relro # END OF MAKEFILE
06-21
<think>我们有两个任务:1.如何在Makefile中指定libasound.so的路径(特别是位于/usr/lib/x86_64-linux-gnu/的情况)2.分析用户提供的Makefile配置细节(参考引用内容)关于第一个任务,我们已经在之前的回答中提供了几种方法。现在结合用户提供的引用,特别是引用[1]和引用[3],我们可以看到在实际项目中如何设置环境变量和Makefile变量来指定libasound.so的路径。用户特别提到库文件在`/usr/lib/x86_64-linux-gnu/libasound.so`,这是一个常见的64位Linux系统的库路径。在Makefile中,我们可以通过设置链接器标志(LDFLAGS)来添加库搜索路径,并通过LIBS(或类似的变量)来指定要链接的库。具体到Makefile,通常有两种方式:方式一:通过LDFLAGS添加库路径,通过LIBS添加库方式二:直接在链接命令中写全路径(不推荐,因为不够灵活)我们推荐方式一。第二个任务:分析用户提供的Makefile配置细节(根据引用内容)。引用[1]展示了一个交叉编译ALSA-Utils的配置,其中设置了多个环境变量(CFLAGS,LDFLAGS,PKG_CONFIG_PATH,LIBS)以及./configure的参数。这些设置都是为了告诉编译系统在哪里找到头文件和库文件。引用[3]展示了一个Makefile片段,其中直接设置了INCLUDES(头文件路径)、LDFLAGS(库搜索路径)、LIBS(链接的库,这里指定了libasound.so的绝对路径)以及编译器和归档工具。现在,我们针对第一个任务给出在Makefile中指定libasound.so路径的方法(针对x86_64系统):</think>### 在Makefile中指定libasound.so路径的完整指南 #### 方法1:通过LDFLAGS指定库搜索路径(推荐) 在Makefile中添加以下配置: ```makefile # 指定库文件搜索路径 LDFLAGS += -L/usr/lib/x86_64-linux-gnu # 显式链接libasound库 LIBS += -lasound ``` 在链接规则中使用: ```makefile your_target: $(OBJECTS) $(CC) $(LDFLAGS) $^ $(LIBS) -o $@ ``` **原理**: - `-L`参数为链接器添加库搜索路径[^1] - `-lasound`会自动查找`libasound.so`动态库 - 适用于标准库命名规范的情况 --- #### 方法2:直接指定绝对路径(硬编码) ```makefile # 直接使用库文件的绝对路径 OS_LIBS = /usr/lib/x86_64-linux-gnu/libasound.so your_target: $(OBJECTS) $(CC) $^ $(OS_LIBS) -o $@ ``` **适用场景**: - 需要精确控制链接的库版本 - 跨平台编译时避免路径混淆 - 参考引用[3]的直接路径指定方式[^3] --- #### 方法3:结合环境变量配置(高级用法) 参考引用[1]的配置模式: ```makefile # 设置头文件和库路径 export CFLAGS += -I/usr/include/alsa export LDFLAGS += -L/usr/lib/x86_64-linux-gnu export LIBS += -lasound -lm -ldl -lpthread # 在编译规则中继承环境变量 %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ ``` **优势**: - 统一管理编译环境[^1] - 方便交叉编译配置(如arm-linux-gnueabihf) - 支持pkg-config等高级工具 --- ### 引用配置的深度分析 #### 引用[1]的配置解析 ```makefile export CFLAGS="-I/root/tools/alsa/alsa-lib/include" # 自定义头文件路径 export LDFLAGS="-L/root/tools/alsa/alsa-lib/lib" # 自定义库搜索路径 export PKG_CONFIG_PATH=".../lib/pkgconfig" # pkg-config配置 export LIBS="-lasound -lm -ldl -lpthread" # 链接的多重依赖 ./configure \ --host=arm-linux-gnueabihf \ # 交叉编译目标 --prefix=/root/tools/alsa/alsa-utils \ # 安装路径 --with-alsa-inc-prefix=.../include \ # ALSA头文件路径 --with-alsa-prefix=.../alsa-lib \ # ALSA库根目录 ``` **关键点**: 1. 完整的环境变量链配置(CFLAGS+LDFLAGS+LIBS) 2. 为交叉编译指定`--host`参数 3. `--with-alsa-*`参数显式覆盖默认搜索路径 4. 链接时需多库支持(数学库、线程库等)[^1] #### 引用[3]的Makefile片段解析 ```makefile INCLUDES = portaudio.h pa_linux_alsa.h # 必需头文件 LDFLAGS = -L/home/.../build/lib # 自定义库路径 LIBS = -lm -lpthread /home/.../libasound.so # 混合指定库 CXX = arm-linux-gnueabihf-g++ # 交叉编译器 AR = arm-linux-gnueabihf-ar # 交叉归档工具 ``` **特点**: 1. 直接指定库的绝对路径(避免链接器搜索) 2. 显式声明编译器工具链(交叉编译必需) 3. 混合使用`-l`和绝对路径指定库文件[^3] --- ### 最佳实践建议 1. **路径验证**:添加前确认路径有效性 ```bash ls -l /usr/lib/x86_64-linux-gnu/libasound.so* ``` 2. **交叉编译**:必须匹配`--host`与工具链前缀 ```makefile CC = arm-linux-gnueabihf-gcc ``` 3. **依赖管理**:ALSA库需要链接额外依赖 ```makefile LIBS += -lasound -lpthread -ldl -lm ``` 4. **版本控制**:推荐使用符号链接 ```bash sudo ln -s libasound.so.2.0.0 libasound.so ``` > **注意**:在x86_64系统中,`/usr/lib/x86_64-linux-gnu`是64位库的标准路径[^2],但交叉编译时需使用目标架构对应的路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值