Linkers and the One Definition Rule

Roger Orr

⏱ 90 minute session
16:00-17:30, Thursday, 18th April 2024
Most C++ programmers use a linker to create the binaries they create, but to many this process is a black box. In this presentation I'll unpack some of the functionality of the linker, and how it relates to the C++ source code that you start with.

I'll also be looking at the C++ One Definition Rule (ODR) and explaining the reasons behind some of the consequences of breaking it.

The purpose of this talk is to improve your understanding of the linking and loading process for C++ programs, focussing on Windows and Linux, so you will hopefully be better able to work with, rather than fight against, the linking process.

Some basic knowledge of writing and executing a C++ program will be assumed.

🏷 C++ linker odr

Roger Orr

Roger has many years of experience in IT, using a variety of languages and platforms, working for a number of different companies over the years, mostly in the financial sector. His recent work has mostly been in C++, on both Windows and Linux.

Roger is an active member of ACCU (, and responsible for the publications, and is also one of the organisers of the ACCU conference. He also writes a regular Code Critique column in the magazine.

He is chair of the UK C++ panel and a member of the C++ ISO standards group WG21 where he is chair of SG23 ("Safety and Security") and a member of the 'Direction Group' which recommends priorities for the ISO C++ standardisation committee.