doc/compiling.md
On Windows users should ensure that the following software is installed:
git (Required for building LibUSB if missing)7zip (optional)cmakeMSVC Compiler (Tested with Visual Studio 2022 and Build Tools for Visual Studio 2022)Install Build Tools for Visual Studio from https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022
Install cmake from https://cmake.org/download/#latest --> Binary distributions --> Windows x64 Installer
Ensure that you add cmake to the $PATH system variable when following the instructions by the setup assistant. Follow the installation instructions on the website.
Fetch the project source files by running git clone https://github.com/stlink-org/stlink.git from the command-line (cmd.exe/powershell.exe)
or download and extract (7zip) the latest stlink .zip release from the Release page on GitHub.
cmd.exe/powershell.exe) with administrator privilegesstlink directory with cd C:\$Path-to-your-stlink-folder$\build subdirectory and move into it with cd .\build.cmake -G "Visual Studio 17 2022" .. -DCMAKE_BUILD_TYPE="Release"cmake --build . --target ALL_BUILDcmake --build . --target INSTALLbin folder of the installation path (C:\Program Files (x86)\stlink\bin) to the PATH environment variables:
SystemPropertiesAdvanced.exeEnvironment Variables buttonSystem Variables list, find and select Path variableEdit.. button bellow the listNew buttonbin path of your installation (C:\Program Files (x86)\stlink\bin)OK button to all three windows to save your changesNOTE:
stlink.Install the following packages from your package repository:
gitgcc or clang or mingw32-gcc or mingw64-gcc (C-compiler; very likely gcc is already present)build-essential (on Debian based distros (Debian, Ubuntu))cmakerpm (on Debian based distros (Debian, Ubuntu), needed for package build with make package)libusb-1.0-0libusb-1.0-0-dev (development headers for building)libgtk-3-dev (optional, needed for stlink-gui)pandoc (optional, needed for generating manpages from markdown)or execute (Debian-based systems only): apt-get install gcc build-essential cmake rpm libusb-1.0-0 libusb-1.0-0-dev libgtk-4-dev pandoc
(Replace gcc with the intended C-compiler if necessary or leave out any optional package not needed.)
~/git: mkdir $HOME/gitcd ~/gitgit clone https://github.com/stlink-org/stlink.gitChange into the project source directory: cd stlink
Run make clean -- required by some linux variants.
Run make release to create the Release target.
Run make install to full install the package with complete system integration. This might require sudo permissions.
Run make debug to create the Debug target (optional)
The debug target is only necessary in order to modify the sources and to run under a debugger.
Run make packageto build a Debian Package. The generated packages can be found in the subdirectory ./build/Release/dist.
Installing system-wide (sudo make install) requires the dynamic library cache to be updated with sudo ldconfig afterwards.
As an option you may also install to an individual user-defined folder e.g $HOME with make install DESTDIR=$HOME.
make uninstall to perform a clean uninstall of the package from the system.make clean to clean the build-folder within the project source and remove all compiled and linked files and libraries.Install the following packages from your package repository:
mingw-w64mingw-w64-commonmingw-w64-i686-devmingw-w64-x86-64-devAfter following the steps for installation above, proceed with from the build dircetory itself:
$ sudo sh ./cmake/packaging/windows/generate_binaries.sh
The generated zip-packages can be found in the subdirectory ./build/dist.
By default most distributions don't allow access to USB devices.
In this context udev rules, which create devices nodes, are necessary to run the tools without root permissions.
To achieve this you need to ensure that the group plugdev exists and the user who is trying to access these devices is a member of this group.
Within the sourcefolder of the project, these rules are located in the subdirectory config/udev/rules.d and are automatically installed along with sudo make install on linux.
Afterwards it may be necessary to reload the udev rules:
$ sudo cp -a config/udev/rules.d/* /lib/udev/rules.d/
$ sudo udevadm control --reload-rules
$ sudo udevadm trigger
udev will now create device node files, e.g. /dev/stlinkv3_XX, /dev/stlinkv2_XX, /dev/stlinkv1_XX.
As the STLINKV1's SCSI emulation is somehow broken, the best advice possibly is to tell your operating system to completely ignore it.
Choose one of the following options before connecting the device to your computer:
modprobe -r usb-storage && modprobe usb-storage quirks=483:3744:iecho "options usb-storage quirks=483:3744:i" >> /etc/modprobe.confmodprobe -r usb-storage && modprobe usb-storagecp stlink_v1.modprobe.conf /etc/modprobe.dmodprobe -r usb-storage && modprobe usb-storageTo put the compiled shared libs into a different directory during installation,
you can use the cmake option cmake -DLIB_INSTALL_DIR:PATH="/usr/lib64" ...
The cmake build system of this toolset includes GNUInstallDirs to define GNU standard installation directories.
This module provides install directory variables as defined by the GNU Coding Standards.
Below are the preset default cmake options, which apply if none of these options are redefined:
-DCMAKE_INSTALL_SYSCONFDIR=/etc-DCMAKE_INSTALL_PREFIX=/usr/localPlease refer to the related cmake documentation for details.
Author: nightwalker-87