{"id":7632,"date":"2026-02-18T17:12:37","date_gmt":"2026-02-18T23:12:37","guid":{"rendered":"https:\/\/www.logikalsolutions.com\/wordpress\/?p=7632"},"modified":"2026-02-18T17:12:37","modified_gmt":"2026-02-18T23:12:37","slug":"rpath","status":"publish","type":"post","link":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/rpath\/","title":{"rendered":"RPATH Notes"},"content":{"rendered":"\n<p>Few things are more frustrating when first developing your own libraries than RPATH. There have been numerous hacks over the years. Gnu even gave us <a href=\"https:\/\/www.gnu.org\/software\/libtool\/manual\/html_node\/Libltdl-interface.html\">libtool<\/a> because POSIX dlopen() just kinda sucked. <\/p>\n\n\n\n<p>Hey, for the end user, dlopen() mostly works. It finds dynamically linked libraries in the system standard search paths, all is well with the world. For the developer working on dynamically linked libraries or worse yet, plugins that use dynamically linked libraries from the same build, it is crawling naked across broken glass.<\/p>\n\n\n\n<p>There is a not bad explanation in <a href=\"https:\/\/askubuntu.com\/questions\/1564048\/can-you-bypass-dlopen-at-program-launch\/1564049#1564049\">this question<\/a>. Yes, I was asking the question. You might want to read it now.<\/p>\n\n\n\n<p>Most of you nave seen my posts on <a href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/fedora\/\">CopperSpice<\/a> and know I currently have <a href=\"https:\/\/github.com\/RolandHughes\/ls-cs\">LsCs<\/a> as a fork. The fork will be disconnected from CopperSpice as soon as I finish my cleanup experiments. Product will also be branded LsX at that time as well. Current working branch is 0.2.1 but that is subject to change.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">.conf Never Worked<\/h2>\n\n\n\n<p>One of the more insidious problems was the fact <a href=\"https:\/\/doc.qt.io\/qt-6\/qt-conf.html\">qt.conf<\/a> never worked. Believe me, I fought this unwinnable battle both times I worked on the IPOS project for different <a href=\"https:\/\/www.publicisgroupe.com\/en\/the-groupe\/about-publicis-groupe\">Publicis Groupe<\/a> agencies. We didn&#8217;t have things like flatpak then. I had to build a .deb that would install (and cleanly un-install) a captive user account for one of those <em>Explore This Computer<\/em> applications you see running in big box stores.<\/p>\n\n\n\n<p>Take a look at the current list of entries for qt.conf<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"769\" height=\"484\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2026\/02\/qt-conf-001.png\" alt=\"\" class=\"wp-image-7633\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2026\/02\/qt-conf-001.png 769w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2026\/02\/qt-conf-001-300x189.png 300w\" sizes=\"(max-width: 769px) 100vw, 769px\" \/><\/figure>\n<\/div>\n\n\n<p>Admittedly the Plugins entry has limited success, but Libraries is a complete farce. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What Happens When You Run An Executable?<\/h2>\n\n\n\n<p>dlopen() bites you in the ass.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"671\" height=\"260\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2026\/02\/dlopen-001.png\" alt=\"\" class=\"wp-image-7634\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2026\/02\/dlopen-001.png 671w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2026\/02\/dlopen-001-300x116.png 300w\" sizes=\"(max-width: 671px) 100vw, 671px\" \/><\/figure>\n<\/div>\n\n\n<p>First, dlopen() operates differently on every OS family. Linux distros mostly work the same, but Mac and QNX are different. I would expect WindRiver and other &#8220;Linux-like&#8221; RTOS implementations to be different as well. Here is where you really need to take a moment and <a href=\"https:\/\/askubuntu.com\/questions\/1564048\/can-you-bypass-dlopen-at-program-launch\/1564049#1564049\">read the previously linked discussion<\/a>. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Your ELF<\/h3>\n\n\n\n<p>Assuming you haven&#8217;t statically linked Gnu libtool and had an init() procedure pre-load every one of your custom library files pointed to by the Libraries entry, dlopen() will follow the above mentioned search paths. the first search path with be RPATH or RUNPATH baked into your ELF.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"47\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2026\/02\/dlopen-002-1024x47.png\" alt=\"\" class=\"wp-image-7635\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2026\/02\/dlopen-002-1024x47.png 1024w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2026\/02\/dlopen-002-300x14.png 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2026\/02\/dlopen-002-768x36.png 768w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2026\/02\/dlopen-002-1200x56.png 1200w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2026\/02\/dlopen-002.png 1361w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>For those who just want a command to scrape<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Deja-Vu-Mono.ttf\" style=\"font-size:.875rem;font-family:Code-Pro-Deja-Vu-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#b392f0;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1f1f1f\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#b392f0;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>readelf -d simple-text-editor | grep -E 'RPATH|RUNPATH'<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki min-dark\" style=\"background-color: #1f1f1f\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">readelf <\/span><span style=\"color: #9DB1C5\">-d<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #9DB1C5\">simple-text-editor<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #F97583\">|<\/span><span style=\"color: #B392F0\"> grep <\/span><span style=\"color: #9DB1C5\">-E<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&#39;RPATH|RUNPATH&#39;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Substitute the path to your executable (or .so) for simple-text-editor.<\/p>\n\n\n\n<p>For CMake users this gets filled in via one line<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Deja-Vu-Mono.ttf\" style=\"font-size:.875rem;font-family:Code-Pro-Deja-Vu-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#b392f0;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1f1f1f\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#b392f0;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki min-dark\" style=\"background-color: #1f1f1f\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">set<\/span><span style=\"color: #B392F0\">(CMAKE_INSTALL_RPATH_USE_LINK_PATH <\/span><span style=\"color: #F97583\">TRUE<\/span><span style=\"color: #B392F0\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Official documentation for INSTALL_RPATH is <a href=\"https:\/\/cmake.org\/cmake\/help\/latest\/prop_tgt\/INSTALL_RPATH.html\">here<\/a>. Gitlab has an <a href=\"https:\/\/gitlab.kitware.com\/cmake\/community\/-\/wikis\/doc\/cmake\/RPATH-handling\">excellent wiki on all the ways you can shoot yourself in the foot with RPATH<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">LD_LIBRARY_PATH<\/h3>\n\n\n\n<p>In order to really use this you have to export it inside of a shell script then run your executable as the next step in the script. LD_LIBRARY_PATH is only read at initial program load. The C startup code that got linked with your executable (or .so)  checks the contents of this variable at startup only. No matter what language you thought you were working with, the OS specific startup code linked into your program as in C and looked for this. You cannot change the content of this from within your program and have anything different happen.<\/p>\n\n\n\n<p>Why?<\/p>\n\n\n\n<p>Someone thought this was more secure. On Windows you can dynamically change the PATH environment variable because each and every invocation of library loading evaluates the current PATH value, but on Linux you are hosed.<\/p>\n\n\n\n<p>The OS is using dlopen(), period. But you can force use of libtool. With libtool you have the following:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"827\" height=\"375\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2026\/02\/image.png\" alt=\"\" class=\"wp-image-7636\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2026\/02\/image.png 827w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2026\/02\/image-300x136.png 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2026\/02\/image-768x348.png 768w\" sizes=\"(max-width: 827px) 100vw, 827px\" \/><\/figure>\n<\/div>\n\n\n<p>The lt_dlopen() family of calls will use the search path you create here.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">First Open is dlopen No Matter What<\/h3>\n\n\n\n<p>The initial loading of simple-text-editor used dlopen() to get standard C and C++ startup code from the OS. No way around it. Adding insult to injury, if you call a function you wish to test in your local library that happens to be in the system libraries at this point, you might well be screwed. Once loaded, rarely re-loaded.<\/p>\n\n\n\n<p>When it comes to 800-pound-gorrilla frameworks like Qt and its derivatives, this means the &#8220;core&#8221; library gets loaded before you have a chance to change things. That means, if it exists on the system search paths, you will get a different version than the one you built in your local library. Those who are lucky won&#8217;t have any Qt libraries installed anywhere else on their system so they will just get a dump from not being able to find the library. Everyone else will slam head against keyboard relentlessly wondering why the library they just built isn&#8217;t being used.<\/p>\n\n\n\n<p>This may well screw you for all library modules. Keep in mind there can\/should\/will be an RPATH backed into the core library load. Anything it chooses to load will be based on those values.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">That Brings Us to Plugins<\/h2>\n\n\n\n<p>Yes, it <em>should<\/em> find your just build plugins, but what RPATH got baked into your ELF? If it is empty, hello \/etc\/ld.so.cache. With a miss there it looks at \/lib, then \/usr\/lib.<\/p>\n\n\n\n<p>Please note that many Linux distros tell ldconfig to also look at \/usr\/local\/lib when building \/etc\/ld.so.cache. Most also configure the compilers to look in \/usr\/local\/include. I bring this up because a great many developers rely on \/usr\/local entries being first in the search paths, or at least ahead of \/lib and \/usr\/lib. They build and install here to avoid RPATH hassles.<\/p>\n\n\n\n<p>If you don&#8217;t force the RPATH and RUNPATH entries blank in your ELF though (see previous wiki link) you just shot yourself in the left foot instead of the right.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Few things are more frustrating when first developing your own libraries than RPATH. There have been numerous hacks over the years. Gnu even gave us libtool because POSIX dlopen() just kinda sucked. Hey, for the end user, dlopen() mostly works. It finds dynamically linked libraries in the system standard search paths, all is well with the world. For the developer working on dynamically linked libraries or worse yet, plugins that use dynamically linked libraries from &hellip; <a title=\"RPATH Notes\" class=\"bnm-read-more\" href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/rpath\/\"><span class=\"screen-reader-text\">RPATH Notes<\/span>Read more<\/a><\/p>\n","protected":false},"author":2,"featured_media":7204,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1309,3,4],"tags":[2347,2348,2349,53,2350,2346,2351,2344,2345],"class_list":["post-7632","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-experience","category-information-technology","category-thank-you-sir-may-i-have-another","tag-dlopen","tag-gnu","tag-libtool","tag-linux","tag-lsx","tag-posix","tag-publicis-groupe","tag-rpath","tag-runpath","bnm-entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>RPATH Notes &#8211; Logikal Blog<\/title>\n<meta name=\"description\" content=\"Few things are more frustrating when first developing your own libraries than RPATH. There have been numerous hacks over the years.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/rpath\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"RPATH Notes &#8211; Logikal Blog\" \/>\n<meta property=\"og:description\" content=\"Few things are more frustrating when first developing your own libraries than RPATH. There have been numerous hacks over the years.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/rpath\/\" \/>\n<meta property=\"og:site_name\" content=\"Logikal Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-18T23:12:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/Ubuntu-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"474\" \/>\n\t<meta property=\"og:image:height\" content=\"266\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"seasoned_geek\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"seasoned_geek\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/rpath\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/rpath\\\/\"},\"author\":{\"name\":\"seasoned_geek\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"headline\":\"RPATH Notes\",\"datePublished\":\"2026-02-18T23:12:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/rpath\\\/\"},\"wordCount\":947,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"image\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/rpath\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/Ubuntu-logo.jpg\",\"keywords\":[\"dlopen\",\"Gnu\",\"libtool\",\"Linux\",\"LsX\",\"POSIX\",\"Publicis Groupe\",\"RPATH\",\"RUNPATH\"],\"articleSection\":[\"Experience\",\"Information Technology\",\"Thank You Sir May I Have Another\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/rpath\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/rpath\\\/\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/rpath\\\/\",\"name\":\"RPATH Notes &#8211; Logikal Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/rpath\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/rpath\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/Ubuntu-logo.jpg\",\"datePublished\":\"2026-02-18T23:12:37+00:00\",\"description\":\"Few things are more frustrating when first developing your own libraries than RPATH. There have been numerous hacks over the years.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/rpath\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/rpath\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/rpath\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/Ubuntu-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/Ubuntu-logo.jpg\",\"width\":474,\"height\":266,\"caption\":\"Ubuntu Logo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/rpath\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"RPATH Notes\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/\",\"name\":\"Logikal Blog\",\"description\":\"For people with attention spans longer than a Tweet\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\",\"name\":\"seasoned_geek\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"caption\":\"seasoned_geek\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\"},\"description\":\"Roland Hughes started his IT career in the early 1980s. He quickly became a consultant and president of Logikal Solutions, a software consulting firm specializing in OpenVMS application and C++\\\/Qt touchscreen\\\/embedded Linux development. Early in his career he became involved in what is now called cross platform development. Given the dearth of useful books on the subject he ventured into the world of professional author in 1995 writing the first of the \\\"Zinc It!\\\" book series for John Gordon Burke Publisher, Inc. A decade later he released a massive (nearly 800 pages) tome \\\"The Minimum You Need to Know to Be an OpenVMS Application Developer\\\" which tried to encapsulate the essential skills gained over what was nearly a 20 year career at that point. From there \\\"The Minimum You Need to Know\\\" book series was born. Three years later he wrote his first novel \\\"Infinite Exposure\\\" which got much notice from people involved in the banking and financial security worlds. Some of the attacks predicted in that book have since come to pass. While it was not originally intended to be a trilogy, it became the first book of \\\"The Earth That Was\\\" trilogy: Infinite Exposure Lesedi - The Greatest Lie Ever Told John Smith - Last Known Survivor of the Microsoft Wars When he is not consulting Roland Hughes posts about technology and sometimes politics on his blog. He also has regularly scheduled Sunday posts appearing on the Interesting Authors blog.\",\"sameAs\":[\"https:\\\/\\\/theminimumyouneedtoknow.com\"],\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/author\\\/seasoned_geek\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"RPATH Notes &#8211; Logikal Blog","description":"Few things are more frustrating when first developing your own libraries than RPATH. There have been numerous hacks over the years.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/rpath\/","og_locale":"en_US","og_type":"article","og_title":"RPATH Notes &#8211; Logikal Blog","og_description":"Few things are more frustrating when first developing your own libraries than RPATH. There have been numerous hacks over the years.","og_url":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/rpath\/","og_site_name":"Logikal Blog","article_published_time":"2026-02-18T23:12:37+00:00","og_image":[{"width":474,"height":266,"url":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/Ubuntu-logo.jpg","type":"image\/jpeg"}],"author":"seasoned_geek","twitter_card":"summary_large_image","twitter_misc":{"Written by":"seasoned_geek","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/rpath\/#article","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/rpath\/"},"author":{"name":"seasoned_geek","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"headline":"RPATH Notes","datePublished":"2026-02-18T23:12:37+00:00","mainEntityOfPage":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/rpath\/"},"wordCount":947,"commentCount":0,"publisher":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"image":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/rpath\/#primaryimage"},"thumbnailUrl":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/Ubuntu-logo.jpg","keywords":["dlopen","Gnu","libtool","Linux","LsX","POSIX","Publicis Groupe","RPATH","RUNPATH"],"articleSection":["Experience","Information Technology","Thank You Sir May I Have Another"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/rpath\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/rpath\/","url":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/rpath\/","name":"RPATH Notes &#8211; Logikal Blog","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/rpath\/#primaryimage"},"image":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/rpath\/#primaryimage"},"thumbnailUrl":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/Ubuntu-logo.jpg","datePublished":"2026-02-18T23:12:37+00:00","description":"Few things are more frustrating when first developing your own libraries than RPATH. There have been numerous hacks over the years.","breadcrumb":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/rpath\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/rpath\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/rpath\/#primaryimage","url":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/Ubuntu-logo.jpg","contentUrl":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/Ubuntu-logo.jpg","width":474,"height":266,"caption":"Ubuntu Logo"},{"@type":"BreadcrumbList","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/rpath\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.logikalsolutions.com\/wordpress\/"},{"@type":"ListItem","position":2,"name":"RPATH Notes"}]},{"@type":"WebSite","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#website","url":"https:\/\/www.logikalsolutions.com\/wordpress\/","name":"Logikal Blog","description":"For people with attention spans longer than a Tweet","publisher":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.logikalsolutions.com\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842","name":"seasoned_geek","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","url":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","caption":"seasoned_geek"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r"},"description":"Roland Hughes started his IT career in the early 1980s. He quickly became a consultant and president of Logikal Solutions, a software consulting firm specializing in OpenVMS application and C++\/Qt touchscreen\/embedded Linux development. Early in his career he became involved in what is now called cross platform development. Given the dearth of useful books on the subject he ventured into the world of professional author in 1995 writing the first of the \"Zinc It!\" book series for John Gordon Burke Publisher, Inc. A decade later he released a massive (nearly 800 pages) tome \"The Minimum You Need to Know to Be an OpenVMS Application Developer\" which tried to encapsulate the essential skills gained over what was nearly a 20 year career at that point. From there \"The Minimum You Need to Know\" book series was born. Three years later he wrote his first novel \"Infinite Exposure\" which got much notice from people involved in the banking and financial security worlds. Some of the attacks predicted in that book have since come to pass. While it was not originally intended to be a trilogy, it became the first book of \"The Earth That Was\" trilogy: Infinite Exposure Lesedi - The Greatest Lie Ever Told John Smith - Last Known Survivor of the Microsoft Wars When he is not consulting Roland Hughes posts about technology and sometimes politics on his blog. He also has regularly scheduled Sunday posts appearing on the Interesting Authors blog.","sameAs":["https:\/\/theminimumyouneedtoknow.com"],"url":"https:\/\/www.logikalsolutions.com\/wordpress\/author\/seasoned_geek\/"}]}},"_links":{"self":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/7632","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/comments?post=7632"}],"version-history":[{"count":1,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/7632\/revisions"}],"predecessor-version":[{"id":7637,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/7632\/revisions\/7637"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/media\/7204"}],"wp:attachment":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/media?parent=7632"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/categories?post=7632"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/tags?post=7632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}