Compilation 在FreeBSD下链接端口库
我通过FreeBSD 11.2下的ports集合构建了一些库(Compilation 在FreeBSD下链接端口库,compilation,linker,freebsd,Compilation,Linker,Freebsd,我通过FreeBSD 11.2下的ports集合构建了一些库(gtk3,qt5,…)。为了测试它们,我只构建了最少的示例。每次链接器抱怨找不到这些库时 如果我错了,请纠正我,但是在FreeBSD下,常规软件包(使用pkg设置的软件包)安装在/usr/include和/usr/lib下,但是默认情况下,端口位于/usr/local/include和/usr/local/lib下 有没有简单的方法告诉编译器在这些目录下搜索,而不是使用带有-I和-L选项的大型编译命令 谢谢你的回答 编辑 这是我的CM
gtk3
,qt5
,…)。为了测试它们,我只构建了最少的示例。每次链接器抱怨找不到这些库时
如果我错了,请纠正我,但是在FreeBSD
下,常规软件包(使用pkg
设置的软件包)安装在/usr/include
和/usr/lib
下,但是默认情况下,端口位于/usr/local/include
和/usr/local/lib
下
有没有简单的方法告诉编译器在这些目录下搜索,而不是使用带有-I
和-L
选项的大型编译命令
谢谢你的回答
编辑
这是我的CMakeLists.txt
:
cmake_minimum_required(VERSION 3.12)
project(gtk-test)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules/")
find_package(GTK3 REQUIRED)
include_directories(${GTK3_INCLUDE_DIRS})
link_directories(${GTK3_LIBRARY_DIRS})
add_executable(gtk-test gtk-test.c)
target_link_libraries(gtk-test ${GTK3_LIBRARIES})
我通过抓取以下CMake
脚本解决了依赖性问题:
但是,出现了另一个问题:
[100%] Linking C executable gtk-test
/usr/lib/crt1.o: In function `_start':
crt1.c:(.text+0x91): undefined reference to `main'
collect2: error: ld returned 1 exit status
编辑
我很愚蠢,我甚至没有注意到示例中没有main
函数。它工作正常,只是默认情况下,CMake
无法定位GTK3
库及其依赖项
以下是我的CMake配置脚本的内容:
Qt5
Qt53DQuick
Qt53DRender
Qt5DataVisualization
Qt5Location
Qt5OpenGLExtensions
Qt5QuickTest
Qt5SerialBus
Qt5UiPlugin
Qt5WebKit
Qt5XmlPatterns
Qt53DAnimation
Qt53DQuickAnimation
Qt5Bluetooth
Qt5Designer
Qt5Multimedia
Qt5Positioning
Qt5QuickWidgets
Qt5SerialPort
Qt5UiTools
Qt5WebKitWidgets
assimp-4.1
Qt53DCore
Qt53DQuickExtras
Qt5Charts
Qt5Gamepad
Qt5MultimediaWidgets
Qt5PrintSupport
Qt5Script
Qt5Sql
Qt5WebChannel
Qt5WebSockets
harfbuzz
Qt53DExtras
Qt53DQuickInput
Qt5Concurrent
Qt5Gui
Qt5Network
Qt5Qml
Qt5ScriptTools
Qt5Svg
Qt5WebEngine
Qt5Widgets
libxml2
Qt53DInput
Qt53DQuickRender
Qt5Core
Qt5Help
Qt5Nfc
Qt5Quick
Qt5Scxml
Qt5Test
Qt5WebEngineCore
Qt5X11Extras
Qt53DLogic
Qt53DQuickScene2D
Qt5DBus
Qt5LinguistTools
Qt5OpenGL
Qt5QuickControls2
Qt5Sensors
Qt5TextToSpeech
Qt5WebEngineWidgets
Qt5Xml
所有第三方软件都安装在
/usr/local
中。但是CMake应该意识到这一点,并且能够找到这些lib/头。您正在构建什么项目?@arrowd我正在尝试从gtk演示程序构建绘图区域。这将导致以下错误/usr/home/hadi/Desktop/gtk test/gtk test.c:1:10:致命错误:“未找到gtk/gtk.h”文件#include。我用了CMake。