活动介绍
file-type

自动编译与管理内核版本的开源工具

GZ文件

下载需积分: 5 | 59KB | 更新于2024-12-23 | 39 浏览量 | 0 下载量 举报 收藏
download 立即下载
知识点1:自动编译内核 自动编译内核通常是为了安装最新版本的Linux内核,或是为了启用一些特定功能。在Linux系统中,内核是操作系统的核心部分,负责管理硬件资源并提供系统服务给用户空间的应用程序。自动编译内核需要开发者对Linux内核有一定的了解,包括内核源码的结构、编译流程以及相关编译工具链的使用。通常,这个过程会涉及到对源码的获取、配置、编译以及安装等步骤。 知识点2:建立和更改软链接 软链接(也称为符号链接或symlink)是一种特殊类型的文件,它包含了另一个文件或目录的路径。在Linux系统中,软链接类似于Windows系统中的快捷方式,它们提供了一种方便的方式来访问一个文件或目录,而不必关心该文件或目录的物理位置。创建软链接的命令是ln -s。例如,如果需要为文件/home/user/myfile创建一个名为myfile_link的软链接,可以使用命令 ln -s /home/user/myfile myfile_link。 知识点3:内核版本之间的移动 内核版本之间的移动可能指的是在不同版本的内核之间切换。这在升级或降级内核时是常见的操作。在Linux系统中,通常会保留多个版本的内核文件,而在启动时通过引导加载器(如GRUB)选择需要启动的内核版本。当用户想要从一个版本的内核切换到另一个版本时,需要更新引导加载器的配置文件,以及可能需要手动创建或修改指向相应内核版本的软链接。 知识点4:下载并安装新内核 下载并安装新内核是一个涉及多个步骤的过程。首先,用户需要从kernel.org或者其他提供内核源码的网站下载所需版本的内核源码压缩包。接着,通常需要解压源码包并进入解压后的目录进行配置,这个配置步骤允许用户选择内核编译时需要包含的模块和功能。 之后是编译过程,这通常通过运行"make"命令来完成。编译完成后,可以使用"make modules_install"来安装内核模块,以及使用"make install"来安装内核本身。安装过程中,可能会自动更新引导加载器配置,以便在重启后可以选择新安装的内核版本启动。 知识点5:开源软件 开源软件(Open Source Software)是指源代码可以被公开访问并允许任何人自由地使用、修改和分发的软件。开源软件的授权通常遵循某些开源许可证,比如GPL(通用公共许可证)或Apache许可证等。这些许可证规定了软件可以如何被使用、修改和共享,以及如何对修改后的源代码进行再分发。 开源项目允许开发者群体共同工作,使得软件的改进和维护变得更为容易。开源软件也通常意味着更少的成本,因为不需要支付软件许可费用,以及更安全、更可靠的代码,因为代码的开放性让全世界的开发者都可以对其进行审查和改进。 知识点6:项目文件信息 给定文件信息中提到的压缩包子文件名为“lkm-0.3.9”,这可能表示这是一个版本号为0.3.9的项目压缩包。项目名称可能是"LKM",这里的"LKM"很可能指的是Loadable Kernel Module(可加载内核模块)。可加载内核模块是Linux内核的一种特性,允许在不重新编译整个内核的情况下,动态地添加或移除内核功能模块。这种模块化的设计使得Linux系统能够更加灵活地适应不同的硬件和应用需求。

相关推荐

filetype

cmake_minimum_required(VERSION 3.0.2) project(hand_igh_v2) ## Compile as C++11, supported in ROS Kinetic and newer add_compile_options(-std=c++11) list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) ## Find catkin macros and libraries ## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) ## is used, also find other catkin packages find_package(catkin REQUIRED COMPONENTS roscpp rospy ) find_package(Xenomai REQUIRED) ## System dependencies are found with CMake's conventions # find_package(Boost REQUIRED COMPONENTS system) ## Uncomment this if the package has a setup.py. This macro ensures ## modules and global scripts declared therein get installed ## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html # catkin_python_setup() ################################################ ## Declare ROS messages, services and actions ## ################################################ ## To declare and build messages, services or actions from within this ## package, follow these steps: ## * Let MSG_DEP_SET be the set of packages whose message types you use in ## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). ## * In the file package.xml: ## * add a build_depend tag for "message_generation" ## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET ## * If MSG_DEP_SET isn't empty the following dependency has been pulled in ## but can be declared for certainty nonetheless: ## * add a exec_depend tag for "message_runtime" ## * In this file (CMakeLists.txt): ## * add "message_generation" and every package in MSG_DEP_SET to ## find_package(catkin REQUIRED COMPONENTS ...) ## * add "message_runtime" and every package in MSG_DEP_SET to ## catkin_package(CATKIN_DEPENDS ...) ## * uncomment the add_*_files sections below as needed ## and list every .msg/.srv/.action file to be processed ## * uncomment the generate_messages entry below ## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) ## Generate messages in the 'msg' folder # add_message_files( # FILES # Message1.msg # Message2.msg # ) ## Generate services in the 'srv' folder # add_service_files( # FILES # Service1.srv # Service2.srv # ) ## Generate actions in the 'action' folder # add_action_files( # FILES # Action1.action # Action2.action # ) ## Generate added messages and services with any dependencies listed here # generate_messages( # DEPENDENCIES # std_msgs # Or other packages containing msgs # ) ################################################ ## Declare ROS dynamic reconfigure parameters ## ################################################ ## To declare and build dynamic reconfigure parameters within this ## package, follow these steps: ## * In the file package.xml: ## * add a build_depend and a exec_depend tag for "dynamic_reconfigure" ## * In this file (CMakeLists.txt): ## * add "dynamic_reconfigure" to ## find_package(catkin REQUIRED COMPONENTS ...) ## * uncomment the "generate_dynamic_reconfigure_options" section below ## and list every .cfg file to be processed ## Generate dynamic reconfigure parameters in the 'cfg' folder # generate_dynamic_reconfigure_options( # cfg/DynReconf1.cfg # cfg/DynReconf2.cfg # ) ################################### ## catkin specific configuration ## ################################### ## The catkin_package macro generates cmake config files for your package ## Declare things to be passed to dependent projects ## INCLUDE_DIRS: uncomment this if your package contains header files ## LIBRARIES: libraries you create in this project that dependent projects also need ## CATKIN_DEPENDS: catkin_packages dependent projects also need ## DEPENDS: system dependencies of this project that dependent projects also need catkin_package( INCLUDE_DIRS include LIBRARIES hand_igh_v2 CATKIN_DEPENDS roscpp rospy DEPENDS system_lib ) ########### ## Build ## ########### ## Specify additional locations of header files ## Your package locations should be listed before other locations include_directories( # include ${catkin_INCLUDE_DIRS} ${Xenomai_ALCHEMY_INCLUDE_DIRS} /opt/etherlab/include ./include/ ../../devel/include ) ## Declare a C++ library # add_library(${PROJECT_NAME} # src/${PROJECT_NAME}/hand_igh_v2.cpp # ) ## Add cmake target dependencies of the library ## as an example, code may need to be generated before libraries ## either from message generation or dynamic reconfigure # add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) ## Declare a C++ executable ## With catkin_make all packages are built within a single CMake context ## The recommended prefix ensures that target names across packages don't collide add_executable(${PROJECT_NAME}_node src/main.cpp src/pdos.cpp src/callback.cpp src/nano17.cpp src/hit_ft_sensor.cpp) ## Rename C++ executable without prefix ## The above recommended prefix causes long target names, the following renames the ## target back to the shorter version for ease of user use ## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node" set_target_properties(${PROJECT_NAME}_node PROPERTIES COMPILE_FLAGS ${Xenomai_ALCHEMY_DEFINITIONS}) ## Add cmake target dependencies of the executable ## same as for the library above # add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) ## Specify libraries to link a library or executable target against target_link_libraries(${PROJECT_NAME}_node ${catkin_LIBRARIES} ${catkin_LIBRARIES} ${Xenomai_ALCHEMY_LIBRARIES} -L/opt/etherlab/lib -lethercat /opt/etherlab/lib/libethercat.so.1 ) ############# ## Install ## ############# # all install targets should use catkin DESTINATION variables # See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html ## Mark executable scripts (Python etc.) for installation ## in contrast to setup.py, you can choose the destination # catkin_install_python(PROGRAMS # scripts/my_python_script # DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} # ) ## Mark executables for installation ## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html # install(TARGETS ${PROJECT_NAME}_node # RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} # ) ## Mark libraries for installation ## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html # install(TARGETS ${PROJECT_NAME} # ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} # LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} # RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} # ) ## Mark cpp header files for installation # install(DIRECTORY include/${PROJECT_NAME}/ # DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} # FILES_MATCHING PATTERN "*.h" # PATTERN ".svn" EXCLUDE # ) ## Mark other files for installation (e.g. launch and bag files, etc.) # install(FILES # # myfile1 # # myfile2 # DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} # ) ############# ## Testing ## ############# ## Add gtest based cpp test target and link libraries # catkin_add_gtest(${PROJECT_NAME}-test test/test_hand_igh_v2.cpp) # if(TARGET ${PROJECT_NAME}-test) # target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) # endif() ## Add folders to be run by python nosetests # catkin_add_nosetests(test)

filetype

npm install [email protected] npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead. npm WARN ERESOLVE overriding peer dependency npm WARN While resolving: [email protected] npm WARN Found: [email protected] npm WARN node_modules/eslint npm WARN peer eslint@">= 1.6.0" from @vue/[email protected] npm WARN node_modules/@vue/cli-plugin-eslint npm WARN dev @vue/cli-plugin-eslint@"4.4.6" from the root project npm WARN 4 more (babel-eslint, eslint-plugin-vue, vue-eslint-parser, the root project) npm WARN npm WARN Could not resolve dependency: npm WARN peer eslint@">=1.6.0 <7.0.0" from [email protected] npm WARN node_modules/@vue/cli-plugin-eslint/node_modules/eslint-loader npm WARN eslint-loader@"^2.2.1" from @vue/[email protected] npm WARN node_modules/@vue/cli-plugin-eslint npm WARN npm WARN Conflicting peer dependency: [email protected] npm WARN node_modules/eslint npm WARN peer eslint@">=1.6.0 <7.0.0" from [email protected] npm WARN node_modules/@vue/cli-plugin-eslint/node_modules/eslint-loader npm WARN eslint-loader@"^2.2.1" from @vue/[email protected] npm WARN node_modules/@vue/cli-plugin-eslint npm ERR! code E404 npm ERR! 404 Not Found - GET https://registry.npmjs.org/easy-player-pro - Not found npm ERR! 404 npm ERR! 404 '[email protected]' is not in this registry. npm ERR! 404 npm ERR! 404 Note that you can also install from a npm ERR! 404 tarball, folder, http url, or git url. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\lxy\AppData\Local\npm-cache\_logs\2025-06-14T02_49_31_645Z-debug-0.log 安装easy-player-pro报错

filetype

/**************************************************************************** ** ** This file is part of the LibreCAD project, a 2D CAD program ** ** Copyright (C) 2010 R. van Twisk ([email protected]) ** Copyright (C) 2001-2003 RibbonSoft. All rights reserved. ** ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file gpl-2.0.txt included in the ** packaging of this file. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ** ** This copyright notice MUST APPEAR in all copies of the script! ** **********************************************************************/ #ifndef QC_GRAPHICVIEW_H #define QC_GRAPHICVIEW_H #include <QWidget> #include "rs_document.h" #include "rs_eventhandler.h" #include "qg_graphicview.h" class QC_ApplicationWindow; /** * A view widget for the visualisation of drawings. * Very thin wrapper for LibreCAD specific settings. * * @author Andrew Mustun */ class QC_GraphicView : public QG_GraphicView { Q_OBJECT public: QC_GraphicView(RS_Document* doc, QWidget* parent=0); virtual ~QC_GraphicView()=default; private: //RS_Document* document; }; #endif /**************************************************************************** ** ** This file is part of the LibreCAD project, a 2D CAD program ** ** Copyright (C) 2010 R. van Twisk ([email protected]) ** Copyright (C) 2001-2003 RibbonSoft. All rights reserved. ** ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file gpl-2.0.txt included in the ** packaging of this file. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ** ** This copyright notice MUST APPEAR in all copies of the script! ** **********************************************************************/ #ifndef QG_GRAPHICVIEW_H #define QG_GRAPHICVIEW_H #include <QWidget> #include "rs_graphicview.h" #include "rs_layerlistlistener.h" #include "rs_blocklistlistener.h" class QGridLayout; class QLabel; class QMenu; class QG_ScrollBar; /** * This is the Qt implementation of a widget which can view a * graphic. * * Instances of this class can be linked to layer lists using * addLayerListListener(). */ class QG_GraphicView: public RS_GraphicView, public RS_LayerListListener, public RS_BlockListListener { Q_OBJECT public: QG_GraphicView(QWidget* parent = 0, Qt::WindowFlags f = 0, RS_Document* doc = 0); ~QG_GraphicView() override; int getWidth() const override; int getHeight() const override; void redraw(RS2::RedrawMethod method=RS2::RedrawAll) override; void adjustOffsetControls() override; void adjustZoomControls() override; void setBackground(const RS_Color& bg) override; void setMouseCursor(RS2::CursorType c) override; void updateGridStatusWidget(const QString& text) override; virtual void getPixmapForView(std::unique_ptr<QPixmap>& pm); // Methods from RS_LayerListListener Interface: void layerEdited(RS_Layer*) override{ redraw(RS2::RedrawDrawing); } void layerRemoved(RS_Layer*) override{ redraw(RS2::RedrawDrawing); } void layerToggled(RS_Layer*) override{ redraw(RS2::RedrawDrawing); } void layerActivated(RS_Layer *) override; /** * @brief setOffset * @param ox, offset X * @param oy, offset Y */ void setOffset(int ox, int oy) override; /** * @brief getMousePosition() mouse position in widget coordinates * @return the cursor position in widget coordinates * returns the widget center, if cursor is not on the widget */ RS_Vector getMousePosition() const override; void setAntialiasing(bool state); void setCursorHiding(bool state); void addScrollbars(); bool hasScrollbars(); void setCurrentQAction(QAction* q_action); QString device; void destroyMenu(const QString& activator); void setMenu(const QString& activator, QMenu* menu); protected: void mousePressEvent(QMouseEvent* e) override; void mouseDoubleClickEvent(QMouseEvent* e) override; void mouseReleaseEvent(QMouseEvent* e) override; void mouseMoveEvent(QMouseEvent* e) override; void tabletEvent(QTabletEvent* e) override; void leaveEvent(QEvent*) override; void enterEvent(QEvent*) override; void focusInEvent(QFocusEvent*) override; void focusOutEvent(QFocusEvent*) override; void wheelEvent(QWheelEvent* e) override; void keyPressEvent(QKeyEvent* e) override; void keyReleaseEvent(QKeyEvent* e) override; bool event(QEvent * e) override; void paintEvent(QPaintEvent *)override; void resizeEvent(QResizeEvent* e) override; QList<QAction*> recent_actions; private slots: void slotHScrolled(int value); void slotVScrolled(int value); protected: //! Horizontal scrollbar. QG_ScrollBar* hScrollBar; //! Vertical scrollbar. QG_ScrollBar* vScrollBar; //! Layout used to fit in the view and the scrollbars. QGridLayout* layout; //! CAD mouse cursor std::unique_ptr<QCursor> curCad; //! Delete mouse cursor std::unique_ptr<QCursor> curDel; //! Select mouse cursor std::unique_ptr<QCursor> curSelect; //! Magnifying glass mouse cursor std::unique_ptr<QCursor> curMagnifier; //! Hand mouse cursor std::unique_ptr<QCursor> curHand; // Used for buffering different paint layers std::unique_ptr<QPixmap> PixmapLayer1; // Used for grids and absolute 0 std::unique_ptr<QPixmap> PixmapLayer2; // Used for the actual CAD drawing std::unique_ptr<QPixmap> PixmapLayer3; // Used for crosshair and actionitems RS2::RedrawMethod redrawMethod; //! Keep tracks of if we are currently doing a high-resolution scrolling bool isSmoothScrolling; QMap<QString, QMenu*> menus; private: bool antialiasing{false}; bool scrollbars{false}; bool cursor_hiding{false}; signals: void xbutton1_released(); void gridStatusChanged(const QString&); }; #endif 这两个类的区别是什么,如果我要写一个2dcad,我一个怎么为我两个类似的类命名?

苏利福
  • 粉丝: 35
上传资源 快速赚钱